我在文檔中有一個值爲「OK」的狀態。elasticsearch TERM查詢不返回包含確切字詞的文檔
以下匹配查詢返回我這個文件:
POST /bank/_search
{
"query": {
"bool" : {
"must" : {
"match" : { "state" : "OK" }
}
}}}
以下術語的查詢不符合國家「OK」返回我的文檔:
POST /bank/_search
{
"query": {
"bool" : {
"must" : {
"term" : { "state" : "OK" }
}
}}}
是根據定義「術語查詢查找包含倒排索引中指定的確切詞彙的文檔。「仍然我很困惑爲什麼術語查詢不會返回所需的文檔。
我通過感導入的數據通過執行以下命令:
curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary "@accounts.json"
curl 'localhost:9200/_cat/indices?v'
這將是巨大的,如果有人也可以分享一些信息相/反轉,分析/非分析和長期/匹配。我讀了這些,但我仍然感到困惑。
那奇怪。原始的json將「狀態」設置爲「確定」,並且仍然只有小寫的「確定」返回文檔。這是什麼原因?如果文本被設置爲不被分析,那麼我假設「確定」會返回文檔,「確定」不會,更正? – maverick
還有一件事,當我輸入「Ok」或「oK」時,匹配查詢如何返回文檔?它是否改變每個小字符的輸入,即「好」,然後檢查?或倒排索引有「OK」,「ok」,「Ok」,「oK」即所有組合? – maverick
是的,你是對的。如果不是標準分析器,匹配查詢總是檢查添加到屬性(Here state屬性)的分析器,然後在搜索文本上執行分析器。標準分析器的行爲降低了文本。所以你添加了什麼文字(好的,好的,等等),每一件東西都會被縮小和搜索 – LMK