我有一個關於Elasticsearch DSL的問題。範圍Elasticsearch針對特定Ids的結果
我想做一個全文搜索,但將可搜索記錄的範圍擴展到特定數據庫ID的數組。
在SQL世界中,它的功能等同於WHERE id IN(1, 2, 3, 4)
。
我一直在研究,但我發現Elasticsearch查詢DSL文檔有點神祕,缺乏有用的例子。任何人都可以將我指向正確的方向嗎?
我有一個關於Elasticsearch DSL的問題。範圍Elasticsearch針對特定Ids的結果
我想做一個全文搜索,但將可搜索記錄的範圍擴展到特定數據庫ID的數組。
在SQL世界中,它的功能等同於WHERE id IN(1, 2, 3, 4)
。
我一直在研究,但我發現Elasticsearch查詢DSL文檔有點神祕,缺乏有用的例子。任何人都可以將我指向正確的方向嗎?
這是一個示例查詢,它可能適用於您。這假設_all
字段已在您的索引上啓用(這是默認值)。它會在索引中的所有字段中進行全文搜索。此外,通過添加ids
篩選器,該查詢將排除其ID不在給定數組中的任何文檔。
{
"bool": {
"must": {
"match": {
"_all": "your search text"
}
},
"filter": {
"ids": {
"values": ["1","2","3","4"]
}
}
}
}
希望這會有所幫助!
您可以創建一個包含必須的第一個IDS查詢布爾查詢: https://www.elastic.co/guide/en/elasticsearch/reference/2.0/query-dsl-ids-query.html
通過在布爾查詢使用MUST條款,您的搜索將進一步通過您指定的ID限制。我在這裏假設您是指您的文檔的_id值。
謝謝布魯克!這正是我所期待的。語法的細微差別非常有幫助。非常感謝。 – mindtonic
不客氣,很高興提供幫助。與ES玩得開心! – BrookeB
是的,它非常強大。我絕對喜歡它,只需要一點點幫助導航語法。再次感謝! – mindtonic