在elasticsearch查询中排除子文档

时间:2015-07-16 09:41:34

标签: elasticsearch

给出这样的文档结构:

{
    "a": "vala",
    "b": "valb",
    "c": {
        "ca": "valca",
        "cb": "valcb"
    },
    "x": {
        "xa": "valxa",
        "xb": "valxb"
    },
    "d": "vald",
    ...
}

如何构造一个返回具有某些" search_value"的文档的查询在" x"之外的任何文件领域子文档。

这样的文件包括在内:
{" a":" search_value"},
{" c":{" cb":" search_value"},
{" ggg":" search_value"," x":{" xa":" valxa"}}
{" ggg":" search_value"," x":{" xa":" search_value"}}

这样的文件不会包括在内:
{" a":" vala"},
{" a":" vala"," x":{" xa":" search_value"}}
{" x":" search_value"}

1 个答案:

答案 0 :(得分:0)

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

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

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