0
I '銀行Elasticsearchは、ドキュメント内の配列フィールドのために正確に照会に失敗
[
{
"_id": "1",
"name": "ICIC",
"balance": "$2,574.27",
"friends": [
{
"roleid": 0,
"name": "Alana Shepard",
"isactive": true
},
{
"roleid": 1,
"name": "Katheryn Hatfield",
"isactive": false
}
]
},
{
"_id": "2",
"name": "SBK",
"balance": "$2,346.44",
"friends": [
{
"roleid": 0,
"name": "Hinton Kaufman",
"isactive": true
},
{
"roleid": 1,
"name": "Miles Alford",
"isactive": true
}
]
}
]
呼ばelasticsearchタイプで、以下のデータは、今私は、ドキュメントfriends.roleid = 1や友人をフェッチしようとしてい.isactive = true。次のように要求されたDSLクエリは結果が期待
{
"query": {
"bool": {
"must": [
{
"term": {
"friends.roleid": {
"value": 1
}
}
},
{
"term": {
"friends.isactive": {
"value": true
}
}
}
]
}
}
}
、ある_id = 2を持つオブジェクトです。しかし実際の結果は、_id = 1と_id = 2の両方であった。誰かがDSLクエリの問題点を見つけるのを助けてくれたら大変感謝しています。ありがとう
あなたの 'friends'フィールドを' nested'型として宣言する必要があります。理由:https://www.elastic.co/guide/en/elasticsearch/guide/2.x/nested-objects.html – Val
Val同じリクエストでネストされたクエリと通常のDSLクエリを書き込むにはどうすればよいですか? –
'bool/must'を使って、' term'クエリを入れ子にしたのと同じ方法で組み合わせることができます。 – Val