我正在尝试创建一个将返回突出显示的响应的查询。我的查询是:
POST myindex/_search
{
"from": 0,
"size": 1,
"query": {
"query_string": {
"query": "search for this"
}
},
"highlight": {
"pre_tags": [
"<b>"
],
"post_tags": [
"</b>"
],
"fields": {
"_all": {}
}
}}
但结果不会有任何亮点,它包含的就是这样的命中:
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.2791085,
"hits": [
{
"_index": "devintranett_1",
"_type": "searchdocuments",
"_id": "/link/ae0089b649e14de080fd94acb79bdfcd.aspx?id=1412&epslanguage=no",
"_score": 0.2791085,
"_source": {
"id": "/link/ae0089b649e14de080fd94acb79bdfcd.aspx?id=1412&epslanguage=no",
"contentType": 0,
"location": "/link/ae0089b649e14de080fd94acb79bdfcd.aspx?id=1412&epslanguage=no",
"ingress": "...",
"content": "...",
"title": "...",
"createdDate": "2014-01-15T15:16:24",
"changedDate": "2014-01-15T15:16:45.887"
}
}
]
}
}
我缺少什么才能获得突出显示的结果?
更新
我想我想通了,要获得匹配查询需要的亮点,这是正确的吗?
答案 0 :(得分:0)
您选择了错误的字段来突出显示。实际上,突出显示意味着需要对字段进行索引,以便可以检索其标记(以及它们的位置和偏移)。此外,需要存储该字段以便突出显示和返回。
您通常不需要单独存储字段,因为elasticsearch默认情况下始终存储_source
字段。问题是您选择突出显示_all
字段,该字段不属于您的文档,因此也不属于_source
字段。它需要单独存储在lucene中,但默认情况下不是。
我建议切换到实际出现在文档中的字段上突出显示。事实上,鉴于_all
字段包含来自文档中所有字段的内容,其内容可能不会很好地向您的用户显示。作为实验,您可以通过将_all
的映射更改为"store":"yes"
来配置要存储在lucene中的{{1}}字段。请记住,这会导致浪费一些磁盘空间。