1

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

4

1 回答 1

2

我认为您需要在这里使用嵌套文档

这样,您将能够创建BoolQueries,其中一个 Must 子句在 owner_id 上带有一个 TermQuery,两个 must 子句带有嵌套查询values.key,在and上带有 Term 和 Match 查询values.value

它有帮助吗?

于 2012-12-27T15:00:21.257 回答