一尘不染

找出多重比对查询中相符的栏位

elasticsearch

我在三个字段上使用典型的多匹配查询:名称,城市,州。多重匹配查询还使用Java功能评分脚本。有什么办法可以知道分数脚本中哪些字段与我的多重匹配查询相匹配?如果没有,有什么办法可以从SearchResponse对象中找出答案吗?

我目前使用的是Elasticsearch 1.2.1,但如有必要,我可以轻松升级。


阅读 203

收藏
2020-06-22

共1个答案

一尘不染

我不认为您可以直接通过多重匹配直接执行此操作,但是如果添加突出显示,您应该得到一个响应,显示匹配的字段:

http://www.elasticsearch.org/guide/zh-
CN/elasticsearch/guide/current/highlighting-
intro.html

在此页面的示例中:

    GET /megacorp/employee/_search
    {
        "query" : {
            "match_phrase" : {
                "about" : "rock climbing"
            }
        },
        "highlight": {
            "fields" : {
                "about" : {}
            }
        }

}

您可以将match_phrase更改为multi_match并添加字段列表:

    GET /megacorp/employee/_search
    {
        "query" : {
            "multi_match" : {
                "query" : "rock climbing",
                "fields": ["about", "otherfield"]
            }
        },
        "highlight": {
            "fields" : {
                "about" : {},
                 "otherfield": {}
            }
        }

}

这应该会给您一个突出显示的响应,其中包括匹配文本和匹配字段周围的突出显示。

2020-06-22