gpt4 book ai didi

elasticsearch - ElasticSearch:搜索并返回嵌套类型

转载 作者:行者123 更新时间:2023-12-02 23:41:13 26 4
gpt4 key购买 nike

我是ElasticSearch的新手,使用嵌套映射/查询时遇到了麻烦。

我将以下数据结构添加到索引中:

{
"_id": "3",
"_rev": "6-e9e1bc15b39e333bb4186de05ec1b167",
"skuCode": "test",
"name": "Dragon vol. 1",
"pages": [
{
"id": "1",
"tags": [
{
"name": "dragon"
},
{
"name": "japonese"
}
]
},
{
"id": "2",
"tags": [
{
"name": "tagforanotherpage"
}
]
}
]
}

此索引映射定义为以下:
{
"metabook" : {
"metabook" : {
"properties" : {
"_rev" : {
"type" : "string"
},
"name" : {
"type" : "string"
},
"pages" : {
"type" : "nested",
"properties" : {
"tags" : {
"properties" : {
"name" : {
"type" : "string"
}
}
}
}
},
"skuCode" : {
"type" : "string"
}
}
}
}
}

我的目标是搜索包含特定标签的所有页面,并返回带有过滤页面列表的book对象(我希望ES仅返回与给定标签匹配的页面)。类似于(忽略第二页)的内容:
{
"_id": "3",
"_rev": "6-e9e1bc15b39e333bb4186de05ec1b167",
"skuCode": "test",
"name": "Dragon vol. 1",
"pages": [
{
"id": "1",
"tags": [
{
"name": "dragon"
},
{
"name": "japonese"
}
]
}
]
}

这是我实际使用的查询:
{
"from": 0,
"size": 10,
"query" : {
"nested" : {
"path" : "pages",
"score_mode" : "avg",
"query" : {
"term" : { "tags.name" : "japonese" }
}
}
}
}

但实际上它返回一个空结果。我究竟做错了什么 ?也许我应该直接索引我的“页面”而不是书籍?我想念什么?

先感谢您 !

最佳答案

可悲的是,您不能只取回文档的一部分。如果文档与查询匹配,您将获得全部信息;根目录和所有嵌套文档。如果您只想退回零件,则可以考虑使用父/子文档。

另外,由于嵌套查询中的语法错误较小,因此您看不到任何匹配。仔细查看字段名称:

{
"from": 0,
"size": 10,
"query" : {
"nested" : {
"path" : "pages",
"score_mode" : "avg",
"query" : {
"term" : { "pages.tags.name" : "japonese" }
}
}
}
}

如果您需要与亲子文档有关的帮助,请随时提问! (如果您使用Google搜索,应该有示例)

祝好运!

关于elasticsearch - ElasticSearch:搜索并返回嵌套类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17818222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com