據我了解,關鍵字型別不會被分析并存盤為準確的術語。例如,“關閉”將在彈性搜索中存盤為“關閉”,而文本型別將使用默認或自定義分析器(如果指定)進行分析,它將“關閉”作為 [shut , down] 分成兩個詞和將其存盤在 ES 中。這也適用于搜索。要搜索關鍵字型別的欄位,我們必須搜索它的確切術語,而要搜索文本型別的欄位,我們可以搜索實際文本中存在的任何一個或多個術語。
我有一個名為 sample_index 的索引,它有兩個欄位 - 型別關鍵字的描述和文本型別的訊息
這是名為 sample_index 的索引的映射

詢問
POST sample_index/_search
{
"query": {
"query_string": {
"query": "keyword"
}
}
}
這是上述查詢的輸出:

在這里您可以看到,在搜索描述欄位(屬于關鍵字型別)中存在的“關鍵字”一詞時,結果顯示出來。但據我了解,這是不可能的,對吧?因為對于關鍵字 type ,整個文本都會按原樣被索引,而不會被拆分。這怎么可能,或者我的理解有問題?
ES 版本:5.6.4
uj5u.com熱心網友回復:
特長;
5.6使用query_string時的版本。
如果default_field選擇否,它將轉到_all欄位。
_all欄位是檔案中所有欄位的串聯。
_all 欄位是一個特殊的包羅萬象的欄位,它將所有其他欄位的值連接成一個大字串,使用空格作為分隔符,然后對其進行分析和索引,但不存盤。這意味著它可以被搜索,但不能被檢索。
這就是為什么你有這樣的結果
uj5u.com熱心網友回復:
你message實際上是 type text。此外,您有一個onfield型別,但與您的搜索查詢無關。keywordmessage
因為您使用query_string的是默認搜索所有欄位的 ,所以您的搜索查詢將匹配您message的 type中的“關鍵字”詞text。這就是您能夠搜索“關鍵字”一詞的原因,因為text型別會被分析。
來自query_string檔案
default_field 默認為 index.query.default_field 索引設定,默認值為 *。
欄位檔案
出于不同目的以不同方式索引同一欄位通常很有用。這就是多領域的目的。例如,字串欄位可以映射為全文搜索的文本欄位,以及排序或聚合的關鍵字欄位:
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/497382.html
上一篇:在一個請求中發送多個JSON物件
