弹性搜索中的自定义突出显示

时间:2019-05-16 12:50:55

标签: elasticsearch

我是弹性搜索的新手。我的任务是必须突出显示带有特定标签的某些查询。

我正在使用弹性搜索间隔中提到的类似查询。现在的问题是,我必须用html标签突出显示“我最喜欢的食物”,比如说“收藏夹”,并用不同的html标签突出显示“粥” /热水,说“状态”。

我该怎么做。

POST _search
{
  "query": {
    "intervals" : {
      "my_text" : {
        "all_of" : {
          "ordered" : true,
          "intervals" : [
            {
              "match" : {
                "query" : "my favourite food",
                "max_gaps" : 0,
                "ordered" : true
              }
            },
            {
              "any_of" : {
                "intervals" : [
                  { "match" : { "query" : "hot water" } },
                  { "match" : { "query" : "cold porridge" } }
                ]
              }
            }
          ]
        },
        "boost" : 2.0,
        "_name" : "favourite_food"
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

您可以按如下方式使用Elasticsearch中的Highlighting功能:

GET /index_name/_search
{
  "query": {},
  "highlight": {
    "fields": {
      "content": {
        "type": "unified",
        "number_of_fragments": 0,
        "pre_tags": [
          "<first_filter>",
          "<second_filter>",
          "<third filter>"
        ],
        "post_tags": [
          "<first_filter>",
          "<second_filter>",
          "<third filter>"
        ]
      }
    }
  }
}

应用标签的顺序取决于应用过滤器的顺序。另请注意,应用number_of_fragments:0会返回带有标记匹配的整个内容。