2016-01-20 33 views
0

我有一個關於Elasticsearch DSL的問題。範圍Elasticsearch針對特定Ids的結果

我想做一個全文搜索,但將可搜索記錄的範圍擴展到特定數據庫ID的數組。

在SQL世界中,它的功能等同於WHERE id IN(1, 2, 3, 4)

我一直在研究,但我發現Elasticsearch查詢DSL文檔有點神祕,缺乏有用的例子。任何人都可以將我指向正確的方向嗎?

回答

1

這是一個示例查詢,它可能適用於您。這假設_all字段已在您的索引上啓用(這是默認值)。它會在索引中的所有字段中進行全文搜索。此外,通過添加ids篩選器,該查詢將排除其ID不在給定數組中的任何文檔。

{ 
    "bool": { 
    "must": { 
     "match": { 
     "_all": "your search text" 
     } 
    }, 
    "filter": { 
     "ids": { 
     "values": ["1","2","3","4"] 
     } 
    } 
    } 
} 

希望這會有所幫助!

+0

謝謝布魯克!這正是我所期待的。語法的細微差別非常有幫助。非常感謝。 – mindtonic

+0

不客氣,很高興提供幫助。與ES玩得開心! – BrookeB

+0

是的,它非常強大。我絕對喜歡它,只需要一點點幫助導航語法。再次感謝! – mindtonic

0

您可以創建一個包含必須的第一個IDS查詢布爾查詢: https://www.elastic.co/guide/en/elasticsearch/reference/2.0/query-dsl-ids-query.html

通過在布爾查詢使用MUST條款,您的搜索將進一步通過您指定的ID限制。我在這裏假設您是指您的文檔的_id值。

+0

Ali Beyad,謝謝你的回覆!你會提供一個查詢json的樣子嗎?我想對所有索引字段進行全文搜索幷包含MUST子句,但是我所嘗試的所有內容都會導致語法錯誤,並且我無法在任何地方找到一個很好的書面示例。 – mindtonic

+0

@mindtonic:所以你想同時請求全文搜索和id搜索? – gfd