次のようなデータを含むドキュメントがたくさんあります。
"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 を取得するにはどうすればよいですか?
ありがとう。