簡體   English   中英

獲取 Elasticsearch 中字段值與任何數組元素匹配的所有文檔

[英]Getting all documents in Elasticsearch where a field value matches any of array element

我想要做的是檢索字段值與數組中的任何值匹配的所有文檔。

所以從一個 id 數組: [id1, id2, id3, ..., idn] ,找到所有具有這些 id 的文檔。

我目前可以通過在should內重復match來實現這一點,但這似乎不是正確的方法。

{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "activityOwnerId": "id1"
          }
        },
        {
          "match": {
            "activityOwnerId": "id2"
          }
        },
        ... and so on
      ]
    }
  }
}

如何獲取與數組中的元素之一匹配的所有文檔?

編輯

使用 @Val 建議的terms查詢不會在 Kibana 中返回任何結果:

使用Terms查詢時沒有結果: 沒有條件的結果

找到的結果(具有相同的 id),使用時should 結果與 should 並列出每個 id

如果您正在查看完全匹配,則可以改用terms查詢,它將數組作為輸入:

{
  "query": {
    "terms": {
      "activityOwnerId.keyword": [id1, id2, id3, ..., idn]
    }
  }
}

在 elasicsearch 中有兩種類型的查詢

  1. 術語查詢 - 搜索值中提到的確切術語
  2. 全文查詢 - 首先通過映射字段​​中提到的分析器分析查詢值

如果您想進行術語查詢,那么@Val 提到的答案是完美的,

如果你想寫一個全文查詢,你可以使用這個

GET /_search
{
  "query": {
    "query_string": {
      "query": "activityOwnerId:(id1 OR id2 OR id3...)"
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM