我正在索引一组键值对。密钥始终是UUID,值是用户输入的值。我一直在浏览文档,但我无法弄清楚如何在此场景中查询示例模式:
{
"id": 1,
"owner_id": 1,
"values": [
{ "key": "k3kfa23rewf", "value": "the red card" },
{ "key": "23a2dd23108", "value": "purple balloons" },
]
},
{
"id": 2,
"owner_id": 1,
"values": [
{ "key": "k3kfa23rewf", "value": "the blue card" },
{ "key": "23a2dd23108", "value": "purple balloons" },
]
}
我想查询:
{ "term": { "owner_id": 1 },
{ "term": { "values.key": "23a2dd23108" }, "match": { "values.value": "purple" } },
{ "term": { "values.key": "k3kfa23rewf" }, "match": { "values.value": "blue" } }
以便返回ID为2的记录。有什么建议吗?
答案 0 :(得分:2)
我认为您需要使用nested documents。
这样,您就可以创建BoolQueries,在owner_id上使用带有TermQuery的Must子句,在values.key
和values.value
上使用带有术语和匹配查询的nested queries两个必须条款{1}}。
有帮助吗?