2017-10-11 141 views
0

首先,我是新的彈性搜索。我有場skillName:"Android Sdk"。我在彈性搜索中將此字段映射爲keyword。但問題是,當我通過類似在彈性搜索中搜索文本忽略大寫和小寫字母

搜索
POST _search 
{ 
"query": { 
"match" : { "skillName" : "Android sdk" } 
} 
} 

sdk在搜索查詢小。它不給我任何結果。如何搜索忽略文本的大寫或小寫時字段映射爲關鍵字

回答

0

嘗試以下操作:

{ 
    "query": { 
    "query_string": { 
     "fields": [ 
     "skillName" 
     ], 
     "query": "Android sdk" 
    } 
    } 
} 
+0

無其無效 – FaisalAhmed

+0

選中此項 - https://discuss.elastic.co/t/wildcard-case-insensitive-query-string/75050/5 – Nandeesh

1

要搜索不區分大小寫的,你需要使用一個normalizer關鍵字字段,它被引入在5.2.0中。一個例子見here

1

是的,它忽略了與原始不同的情況,因爲您使用了keyword分析器,該分析器對該標記沒有做任何處理,而是將其保留原樣。在你的情況下,它會做只有當你查詢精確匹配相同令牌

所以,我建議改變這種行爲,至少適用lowercase令牌過濾器,這樣你就可以搭配不同的寄存器條款。

1

您可以將不同的分析儀應用於相同的«領域»,並有一個用於全文搜索,另一個用於排序,聚合。