使用彈性2.3.5。有沒有辦法讓字段可過濾,但無法搜索?例如,我有一個language
字段,其值爲en-US
。在query->bool->filter->term
中設置多個過濾器,我可以在不影響分數的情況下過濾結果集,例如,僅搜索language
字段中具有en-US
的文檔。elasticsearch - 場可篩選但不可搜索
但是,我想要一個查詢搜索術語en-US
返回沒有結果,因爲這不是一個真正的搜索索引字段,但只是我可以過濾。
我可以這樣做嗎?
使用彈性2.3.5。有沒有辦法讓字段可過濾,但無法搜索?例如,我有一個language
字段,其值爲en-US
。在query->bool->filter->term
中設置多個過濾器,我可以在不影響分數的情況下過濾結果集,例如,僅搜索language
字段中具有en-US
的文檔。elasticsearch - 場可篩選但不可搜索
但是,我想要一個查詢搜索術語en-US
返回沒有結果,因爲這不是一個真正的搜索索引字段,但只是我可以過濾。
我可以這樣做嗎?
ElasticSearch使用_all字段允許在整個文檔上進行快速全文搜索。這就是爲什麼在所有文檔的所有字段中搜索en-US都會返回包含'語言'的文檔:'en-US'。 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-all-field.html
您可以在映射中指定"include_in_all": false
以禁用將字段包含到_all中。
PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"title": {
"type": "string"
},
"country": {
"type": "string"
},
"language": {
"type": "string",
"include_in_all": false
}
}
}
}
}
在這個例子中,在所有領域尋找「美國」將返回包含美國冠軍或全國唯一文件。但是您仍然可以使用語言字段來過濾查詢。 https://www.elastic.co/guide/en/elasticsearch/reference/current/include-in-all.html
我已將upvoted標記爲已接受,但意味着也請發表評論,感謝您花時間回答 - 這正是我所期待的。 – Josh
不知道我明白這個問題。你問是否有一種方法來控制'query_string'查詢中允許的字段列表? – imotov
如果該字段是「index」:「no」,並且您想對其進行過濾('「term」:{「not_indexed_field」:{「value」:「en-US」}}'它將像過濾因此,它總是**不匹配**。 –
感謝您的意見和對不起,我沒有及時回覆,向他們提供了您的幫助意願 – Josh