elasticsearch 排除elasticsearch查询中的子文档,elasticsearch,elasticsearch" /> elasticsearch 排除elasticsearch查询中的子文档,elasticsearch,elasticsearch" />

elasticsearch 排除elasticsearch查询中的子文档

elasticsearch 排除elasticsearch查询中的子文档,elasticsearch,elasticsearch,给定如下文档结构: { "a": "vala", "b": "valb", "c": { "ca": "valca", "cb": "valcb" }, "x": { "xa": "valxa", "xb": "valxb" }, "d": "vald", ... } 如何构造一个查询,以返回在“x”子文档之外的文档的任何字段中具有“搜索值”的文档 像这样的文档将被包

给定如下文档结构:

{
    "a": "vala",
    "b": "valb",
    "c": {
        "ca": "valca",
        "cb": "valcb"
    },
    "x": {
        "xa": "valxa",
        "xb": "valxb"
    },
    "d": "vald",
    ...
}
如何构造一个查询,以返回在“x”子文档之外的文档的任何字段中具有“搜索值”的文档

像这样的文档将被包括在内:
{“a”:“搜索值”},
{“c”:{“cb”:“搜索值”},
{“ggg”:“搜索值”,“x”:{“xa”:“valxa”}}
{“ggg”:“搜索值”,“x”:{“xa”:“搜索值”}

像这样的文档将不包括在内:
{“a”:“vala”},
{“a”:“vala”,“x”:{“xa”:“搜索值”}}

{“x”:“search_value”}

我认为您可以使用突出显示查询获取您的点击,并使用通配符突出显示所有点击字段。因此,您需要自己过滤x

例如,在字段x中搜索值:

{
    "fields": [],
    "query": {
        "term": {
            "x": "search_value"
        }
    },
    "highlight": {
        "pre_tags" : [""],
        "post_tags" : [""],
        "fields": {
            "*": {}
        }
    }
}

我认为您可以使用高亮显示查询来获取您的点击,并使用通配符来高亮显示所有点击字段。因此您需要自己筛选x

例如,在字段x中搜索值:

{
    "fields": [],
    "query": {
        "term": {
            "x": "search_value"
        }
    },
    "highlight": {
        "pre_tags" : [""],
        "post_tags" : [""],
        "fields": {
            "*": {}
        }
    }
}

Thaks!不幸的是,我事先不知道字段列表(a、b、c等)。@Tomek我已经更新了我的答案,我使用
通配符来突出显示所有命中字段。但这样它也将包含
x
字段。希望它能帮到你。Thaks!不幸的是,我不知道字段列表(a、b、c等)提前。@Tomek我已经更新了我的答案,我使用
通配符来突出显示所有命中字段。但这样它也将包含
x
字段。希望它能帮助你。你总是排除x字段吗?如果是,为什么索引它?你总是排除x字段吗?如果是,为什么索引它?