如何区分几个应该条款的命中

时间:2014-01-21 09:23:45

标签: elasticsearch

我有几个“应该”条款的查询:

{
    "query": {
        "filtered": {
            "query": {
                "bool": {
                    "should": [
                        {
                            "query_string": {
                                "query": "<condition1>"
                            }
                        },
                        {
                            "query_string": {
                                "query": "<condition1>"
                            }
                        }
                    ]
                }
            },
        }
    },
    "size": 1000,
    "sort": [
        {
            "@timestamp": {
                "order": "asc"
            }
        }
    ]
}

如何找出condition1生成的查询结果,以及condition2生成的查询结果?是否可以为不同条件注入具有不同值的字段,或以任何其他方式区分命中?

1 个答案:

答案 0 :(得分:1)

您可以使用named queries来实现此目标。

{ 
    "query": {
        "bool": {
            "should": [
                {
                    "query_string": {
                        "query": "<condition1>",
                        "_name": "sub_query_1"
                    }
                },
                {
                    "query_string": {
                        "query": "<condition1>",
                        "_name": "sub_query_2"
                    }
                }
            ]
        }
    }
}

您的结果将包含一个matched_filters数组,其中包含sub_query_1sub_query_2或两者。

<强>更新

播放链接:https://www.found.no/play/gist/af1a1fa2b5cf3aa279b1