在Elasticsearch中突出显示

时间:2016-08-25 17:01:18

标签: elasticsearch highlight

这是我的弹性搜索查询:

GET indexname/_search
{

    "fields": ["_id", "url","T"],
    "query" : {
     "bool": {"should": [
       {"simple_query_string": {
         "query": "white",
         "fields": ["T", "content"]
       }}
     ]}
    },
    "highlight" : {
      "pre_tags": ["<b>"], 
      "post_tags": ["</b>"], 
        "fields" : {
            "content" : {"fragment_size" : 150, "number_of_fragments" : 1}

        }
    }
}  

我的弹性搜索查询在字段中搜索白色&#34; T&#34;和&#34;内容&#34;,我正在强调该领域&#34;内容&#34;并插入前后标签b(粗体)。 这是我的查询结果

"hits": {
    "total": 922,
    "max_score": 2.369757,
    "hits": [
      {
        "_index": "indexname",
        "_type": "Searchtype",
        "_id": "http://www.example.com/de/unternehmenssuche-white-paper",
        "_score": 2.369757,
        "fields": {
          "T": [
            "White Paper Unternehmenssuche"
          ],
          "url": [
            "http://www.example.com/de/unternehmenssuche-white-paper"
          ]
        },
        "highlight": {
          "content": [
            "/Anwendungsbeispiele Ressourcen Blog <b>White</b> Papers in Deutsche Downloads Wiki Unternehmen Vorstellung der Search Executive"
          ]
        }
      }
....
...

我希望我的高亮结果看起来像这样

"highlight": {
          "content": [
            "<b>...</b> /Anwendungsbeispiele Ressourcen Blog <b>White</b> Papers in Deutsche Downloads Wiki Unternehmen Vorstellung der Search Executive <b>...</b>"
          ]
        }

我想在精彩内容之前和之后添加<b>...</b>。我应该在弹性搜索查询中添加什么才能使结果看起来像这样?任何帮助将不胜感激

2 个答案:

答案 0 :(得分:3)

正如我在评论中所述,我不认为这可以在Elasticsearch中完成。荧光笔只会突出显示匹配的术语,不会进行进一步的后期处理(我在docs for Elasticsearch 2.3中找不到您可以做到的证据)。

无论如何,我的逻辑方法是在渲染HTML代码时添加<b>...</b>标记。

{{ foreach hit in hits }}
<b>...</b> hit[content] <b>...</b>
{{ endfor }}

像这样,只需修改它以适合您的模板。

答案 1 :(得分:2)

为此目的使用pre_tagspost_tagssee configuring tags

GET /_search
{
    "query" : {
        "match": { "user": "kimchy" }
    },
    "highlight" : {
        "pre_tags" : ["<b>"],
        "post_tags" : ["</b>"],
        "fields" : {
            "content" : {}
        }
    }
}