我有很多文档,其中包含如下所示的数据:
"paymentMethods": [
{
"id": 194,
"name": "Wire",
"logo": "wire.gif"
}, {
"id": 399,
"name": "Paper Check",
"logo": "papercheck.gif"
}
映射:
"paymentMethods": {
"type": "nested",
"properties": {
"id": {
"type": "long"
},
"logo": {
"type": "string",
"index": "not_analyzed"
},
"name": {
"type": "string",
"index": "not_analyzed"
}
}
}
我尝试获取所有具有 paymentMethos.id 399 和 194 的文档。此查询适用于我:
"query": {
"filtered": {
"filter": {
"bool": {
"must": [{
"nested": {
"path": "paymentMethods",
"query": {
"bool": {
"must": [
{
"term": {
"paymentMethods.id": 399
}
}
]
}
}
}
}]
}
},
"query": {
"match_all": {}
}
}
}
问题是我需要 id 为 399 和 194 的所有文档,所以我试了一下:
"must" : [
{ "terms":{"paymentMethods.id" : [399,194]} }
]
但结果有点像 OR 我想要它作为 AND。我也试过这个,但它根本不起作用
"must" : [{
"term": {
"paymentMethods.id": 399
}
}, {
"term": {
"paymentMethods.id": 194
}
}]
任何建议如何获得 paymentMethods.id 399 和 194?
谢谢。