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"
                }
            }
        }
    }
}

查询失败原因分析

如果您没有查询到数据,可能的原因如下:

  1. 数据不存在:请确保在执行查询之前,已经向索引中正确地添加了数据。您可以使用命令行或可视化工具(如Kibana)来检查数据是否已正确索引。
  2. 查询条件不匹配:请确保查询条件中的"userName"字段的值为"zhangjie"的父文档存在。如果该字段的值是动态生成的,可以使用Kibana或其他工具来检查父文档是否包含了该字段的正确值。
  3. 映射配置不正确:请确保映射配置与实际的数据结构一致。特别是要注意字段类型、分词器和关系的设置是否正确。如果映射不正确,可能会导致查询无法正确匹配到文档。

如果您仍然无法解决问题,请提供更多详细信息,以便我们更好地帮助您解决问题。

Elasticsearch 查询:基于父文档 userName 字段的子文档查询

原文地址: https://www.cveoy.top/t/topic/psWt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录