Return 在 Elastic Search 中匹配了哪个字段

Return which field got matched in Elastic Search

我正在尝试找出在返回文档的特定搜索中实际匹配的内容。

例如。我有一个 table 索引,其中有名为 table_name 和 column_name 的字段... 我的搜索查询正在查找这两个字段,现在如果我触发搜索查询并且其中任何一个匹配,但我想知道匹配的是什么..无论是 column_name 还是 table_name.

我知道解释 API 但这需要我调用另一个 API...

您不需要调用解释 API。搜索API支持explain标志

GET Whosebug/_search?explain=true

这将 return _explanation 部分和 _source 部分。

更新

另一个解决方案是使用 highlight。我以前用过它,用于手动评估查询。这是获得有关匹配内容的一些反馈的简单方法

GET Whosebug/_search
{
  "query": {
    "match": {
      "FIELD": "TEXT"
    }
  },
  "highlight": {
    "fields": {
      "*": {}
    }
  }
}

当然你也可以设置解释标志