11

我在 Elasticsearch 中使用 multi_match 进行查询:

{
  "query": {
    "multi_match": {
      "query": "luk",
      "fields": [
        "xml_string.autocomplete",
        "state"
      ]
    }
  },
  "size": 10,
  "fields": [
    "xml_string",
    "state"
  ]
}

效果很好,结果返回预期值:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.41179964,
    "hits": [
      {
        "_index": "documents",
        "_type": "document",
        "_id": "11",
        "_score": 0.41179964,
        "fields": {
          "xml_string": "Lukas bla bla bla",
          "state": "new"
        }
      }
    ]
  }
}

我搜索了很多,但我无法找出与查询匹配的字段(如果它是 xml_string 或状态)

4

2 回答 2

11

我找到了解决方案:我使用了高亮功能,效果很好

这就是我的卷曲的样子:

 curl -X GET 'http://xxxxx.com:9200/documents/document/_search?load=false&size=10&pretty' -d '{
    "query": {
        "multi_match": {
            "query": "123",
            "fields": ["some_field", "another_field"]
        }
    },
    "highlight": {
        "fields": {
            "some_field": {},
            "another_field": {}
        }
    },
    "size": 10,
    "fields": ["field","another_field"]
}'
于 2013-09-05T14:20:57.400 回答
0

据我所知,没有任何功能可以告诉您哪个字段与查询匹配。

但是您可以使用解释功能来调试您的查询。您只需将 pamameter 添加到您的查询中&explain=true。使用此参数,您将看到每个字段为何出现在结果集中的解释,并且您将猜测哪个字段与查询匹配。

于 2013-09-02T16:11:26.360 回答