最近在使用ELasitcsearch的時候,需要用到關鍵字搜索,因為是全字段搜索,就需要使用_all字段的query_string進行搜索。
但是在使用的時候,遇到問題了。我們的業務並不需要分詞,我在各個字段也設置了,not_analyzed。但是在使用query_string對_all字段進行查詢的時候,
發現結果還是分詞的。最后在官網找到這么一段話:
Remember that the _all field is just an analyzed string field. It uses the default analyzer to analyze its values, regardless of which analyzer has been set on the fields where the values originate. And like any string field, you can configure which analyzer the _all field should use:
PUT /my_index/my_type/_mapping
{
"my_type": {
"_all": { "analyzer": "whitespace" }
}
}
就是說,我們在字段中的分詞設置並不管用,如果不需要分詞,只能重新設置。也就是為_all指定分詞器。這里,我指定了通過空格去進行分詞。
終於,通過query_string就可以正常使用得到查詢結果為不分詞的了。
