Elasticsearch:如何突出显示包含搜索字符串的文档中的任何字段?

时间:2017-01-13 12:56:57

标签: elasticsearch

我正在尝试使用动态结构在数千个文档上构建全文搜索查询。

但突出显示方法仅适用于特定命名的字段。

如果我想使用_all或_source搜索,它不会显示任何高亮显示的结果。

我已经尝试了很多种,并试图"谷歌搜索"但没有成功。

基本查询:

  "hits": {
    "total": 8,
    "max_score": 13.482396,
    "hits": [
      {
        "_index": "tracking-2017.01.09",
        "_type": "cyclone",
        "_id": "Cyclone1-UAT-ci1483967534008.6100622@czcholsint372_te-Messaging.Message.MessageUnpackaged.Request",
        "_score": 13.482396,
        "_source": {
        ... truncated ...
          "received": "2017-01-09T13:12:14.008Z",
          "tags": [],
          "@timestamp": "2017-01-09T13:12:14.008Z",
          "size": "3169",
          "pairing": " ci1483967534008.6100622@czcholsint372_te <60a93b9-159835b287e-159835b79041a66cd1@ip.net> ErpExJets_RDC1_ProcessPurchaseOrder_9.4.1_20170109131207169 ErpExJets_RDC1_ProcessPurchaseOrder_9.4.1_20170109131207169",
        }
      },

将返回:

{{1}}

但即使搜索到的字符串在配对字段中也没有突出显示。

有可能吗?

由于 雷迪

1 个答案:

答案 0 :(得分:0)

弹性doumentation在注释中提到 - “为了执行突出显示,该字段的实际内容是必需的。如果存储了相关字段(在映射中将存储设置为true),则将使用它,否则,将加载实际的_source,并从中提取相关字段。“

因此,除非_all设置为true,否则请使用以下查询。

{
    "query": {
        "query_string": {
            "query": "ci1483967534008.6100622@czcholsint372_te"
        }
    },
    "highlight": {
        "require_field_match": false,
        "fields": {
            "pairing": {}
        }
    }
}

如果您对源docuemnt _all设置为true,请使用以下

{
    "query": {
        "query_string": {
            "query": "ci1483967534008.6100622@czcholsint372_te"
        }
    },
    "highlight": {
        "require_field_match": false,
        "fields": {
            "_all": {}
        }
    }
}

希望这有帮助。