Elasticsearch 查询:基于父文档 userName 字段的子文档查询
Elasticsearch 查询:基于父文档 userName 字段的子文档查询
本文介绍如何使用 Elasticsearch 的 has_parent 查询,基于父文档 userName 字段的值,检索与之关联的子文档。并提供常见查询失败的原因分析和解决方法。
查询请求
POST /orderparent/_search
{
"from": 0,
"size": 20,
"sort": {},
"query": {
"has_parent": {
"parent_type": "parent",
"query": {
"term": {
"userName": "zhangjie"
}
}
}
}
}
映射配置
{
"mappings": {
"dynamic": "false",
"properties": {
"child": {
"properties": {
"commentTime": {
"type": "date"
},
"content": {
"type": "text",
"analyzer": "ik_max_word"
},
"userId": {
"type": "keyword"
}
}
},
"parent": {
"properties": {
"createTime": {
"type": "date"
},
"orderNum": {
"type": "text",
"analyzer": "ik_max_word"
},
"userName": {
"type": "keyword"
}
}
},
"relation": {
"type": "join",
"eager_global_ordinals": true,
"relations": {
"parent": "child"
}
}
}
}
}
查询失败原因分析
如果您没有查询到数据,可能的原因如下:
- 数据不存在:请确保在执行查询之前,已经向索引中正确地添加了数据。您可以使用命令行或可视化工具(如Kibana)来检查数据是否已正确索引。
- 查询条件不匹配:请确保查询条件中的
"userName"字段的值为"zhangjie"的父文档存在。如果该字段的值是动态生成的,可以使用Kibana或其他工具来检查父文档是否包含了该字段的正确值。 - 映射配置不正确:请确保映射配置与实际的数据结构一致。特别是要注意字段类型、分词器和关系的设置是否正确。如果映射不正确,可能会导致查询无法正确匹配到文档。
如果您仍然无法解决问题,请提供更多详细信息,以便我们更好地帮助您解决问题。
原文地址: https://www.cveoy.top/t/topic/psWt 著作权归作者所有。请勿转载和采集!