我正在为一个新项目学习弹性。我有一个索引格式:
{
"content_id": "bbbbbb",
"title": "content 2",
"data": [
{
"id": "xx",
"value": 3,
"tags": ["a","b","c"]
},
{
"id": "yy",
"value": 1,
"tags": ["e","d","c"]
}
]
}
如何进行查询以搜索在data中至少有一个元素包含标签**“a”和“B”**的内容?
非常感谢!!
我如何进行查询或重新设计我的格式数据,以方便进行新的查询?
2条答案
按热度按时间2admgd591#
在Elasticsearch中处理列表和嵌套文档有点棘手。
创建索引时,需要指定嵌套文档的Map。可以通过为数据字段添加Map来完成此操作。
如果您已经创建了索引,那么您应该先将其delete,然后使用Map再次创建它。
在删除索引之前,可以将数据reindex(复制)到新索引。
现在可以使用嵌套查询查询数据字段:
bq8i3lrv2#
如果要求在
data
中至少有一个对象同时包含**a
和b
的情况下获取文档,则需要按照@ChamRun的建议指定nested
Map。但是,要获得同时具有
a
和b
**的结果,您需要使用以下查询: