弹性搜索分组查询

时间:2012-12-27 14:34:34

标签: elasticsearch

我正在索引一组键值对。密钥始终是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的记录。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

我认为您需要使用nested documents

这样,您就可以创建BoolQueries,在owner_id上使用带有TermQuery的Must子句,在values.keyvalues.value上使用带有术语和匹配查询的nested queries两个必须条款{1}}。

有帮助吗?