这是我的弹性搜索查询:
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>
。我应该在弹性搜索查询中添加什么才能使结果看起来像这样?任何帮助将不胜感激
答案 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_tags
和post_tags
。see configuring tags
GET /_search
{
"query" : {
"match": { "user": "kimchy" }
},
"highlight" : {
"pre_tags" : ["<b>"],
"post_tags" : ["</b>"],
"fields" : {
"content" : {}
}
}
}