2016-02-07 24 views
3

我按照從here在elasticsearch中匹配查詢是否區分大小寫?

一個例子的索引的映射是

{ 
    "mappings": { 
    "my_type": { 
     "properties": { 
     "full_text": { 
      "type": "string" 
     }, 
     "exact_value": { 
      "type": "string", 
      "index": "not_analyzed" 
     } 
     } 
    } 
    } 
} 

和索引文件是

{ 
    "full_text": "Quick Foxes!", 
    "exact_value": "Quick Foxes!" 
} 

,同時使用一個簡單的匹配查詢我注意到「 full_text「字段如下

{ 
    "query": { 
    "match": { 
     "full_text": "quick" 
    } 
    } 
} 

我看到文檔正在匹配。另外如果我使用大寫字母,即「QUICK」,作爲搜索詞,它顯示文檔是匹配的。

爲什麼這樣?默認情況下,標記器將「full_text」字段中的文本分割爲「quick」,「foxes」。那麼匹配查詢如何匹配文件的大寫值?

+0

我不明白你的問題。你是說什麼時候「快」或「快」你得到相同的文件? – CodeNotFound

+0

是的。當使用「匹配」查詢時,兩個單詞都找到匹配。但使用「詞」查詢時,大寫單詞不找到匹配,我們正在查看分析的術語內容,這在詞語查詢中是相當可以理解的 查詢字符串「QUICK」在使用匹配查詢時轉換爲「quick」嗎 –

+0

我回答了您的問題,請接受它作爲anaswer滿意你;-) – CodeNotFound

回答

3

由於您尚未指定將哪個分析器用於「full_text」字段到您的索引映射中,因此將使用默認分析器。默認值將是「Standard Analyzer」。

報價從ElasticSearch文檔:

型標準的分析是使用標準分詞器與標準權過濾器,小寫令牌過濾器,並停止令牌過濾器內置。

在您的索引中執行查詢之前,ElasticSearch會將與您的字段配置相同的分析器應用於您的查詢值。由於默認分析器在其處理中使用小寫令牌篩選器,則使用「快速」或「快速」或「快速」將給出相同的查詢,因爲分析器將使用小寫令牌篩選器和結果只是「快速」。