2016-06-09 52 views
0

我有這個查詢(例如'hello')和這個id(例如'12345'),我想要搜索的內容與'text'字段中的查詢和'thread'字段中的id都匹配。但是,在給定的IDS是一個數組,這樣的邏輯是這樣的:有沒有辦法查看查詢是否與Elasticsearch中的數組中的任何元素匹配?

function runThisQuery(query, ids) { 
    client.search({   
    index: '_all', 
    type: 'text', 
    body: { 
     query: { 
     bool: { 
      must: { 
      match: { text: query } 
      }, 
      should: [ 
      { match: { thread: { query: ids[0], operator: 'AND'} } }, 
      { match: { thread: { query: ids[1], operator: 'AND'} } } 
      ], 
      minimum_should_match: 1 
     } 
     } 
    } 
    }) 
} 

有沒有像在運營商(MongoDB中等等)的$相匹配的線程,如果它的「IDS」陣列中?謝謝!

回答

1

您可以使用ids這樣的查詢

{ 
    "filter": { 
    "ids": { 
     "type": "my_type", 
     "values": [ 
     "12345","67891","12346" 
     ] 
    } 
    } 
} 
+0

但這是,如果我知道什麼是「價值」已經是。它們將會是動態的,因爲我將它們添加到數據庫中,它不是線程值的靜態數組。 – user3835653

+0

您可以簡單地從數據庫中獲取數組並將其追加到查詢中。 { 「過濾器」:{ 「IDS」:{ 「類型」: 「my_type」, 「值」:*** JSON編碼陣列,並且把這裏**** }} } –

相關問題