2017-05-11 31 views
0

假設我們有一個數據: -quey_string搜索不按預期工作

{ "_id" : "1","name" : "Doeman John"} 
{"_id" : "2","name" : "John"} 

查詢中使用: -

{ 

    "query": { 
    "query_string": { 
     "fields" : ["name"] , 
     "query": "John" 
    } 
    } 
} 

實際結果: -

{ "_id" : "1","name" : "Doeman John"} 
{"_id" : "2","name" : "John"} 

預期結果: -

{"_id" : "2","name" : "John"} 

我使用的標準分析。我是否可以在不更改任何分析儀設置的情況下實現我的expected result

+0

不,你不能在不改變'analyzer'設置的情況下做到這一點。如果你想保留分析版本,你可以使用'multifield'。 – Richa

+0

沒有得到你的最後一點'你可以使用多字段以防萬一你想保留分析版本'? –

+0

這意味着您可以爲名稱創建兩個字段。一個將「分析」設置,另一個將「未分析」。在你的情況下,你會搜索未分析的版本。 – Richa

回答

1

如果不更改analyzer設置,則無法實現此目的。 如果你仍然想使用Standard Analyzer,你可以使你的字段multifield

{ 
"mappings": { 
"my_type": { 
    "properties": { 
    "name": { 
     "type": "text", 
     "fields": { 
     "raw": { 
      "type": "keyword" 
      } 
     } 
     } 
    } 
    } 
} 
} 

然後在not_analyzed版本上運行您的查詢。

{ 
    "query": { 
    "term": { 
    "name.raw": { 
     "value": "John" 
     } 
    } 
    } 
    } 

這將根據您的要求提取結果。

`