![](/img/trans.png)
[英]ElasticSearch: Filter for documents where any value in an array field is not in a list
[英]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
查詢,它將數組作為輸入:
{
"query": {
"terms": {
"activityOwnerId.keyword": [id1, id2, id3, ..., idn]
}
}
}
在 elasicsearch 中有兩種類型的查詢
如果您想進行術語查詢,那么@Val 提到的答案是完美的,
如果你想寫一個全文查詢,你可以使用這個
GET /_search
{
"query": {
"query_string": {
"query": "activityOwnerId:(id1 OR id2 OR id3...)"
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.