Elasticsearch突出显示 - 无法正常工作

use*_*138 1 elasticsearch

我有以下问题:

我正在做一些带有刻面的测试

我的脚本如下:

https://gist.github.com/nayelisantacruz/6610862

我得到的结果如下:

{
    "took": 2,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 2,
        "max_score": 1,
        "hits": []
    },
    "facets": {
        "title": {
            "_type": "terms",
            "missing": 0,
            "total": 2,
            "other": 0,
            "terms": [
                {
                    "term": "JavaScript",
                    "count": 1
                },
                {
                    "term": "Java Platform, Standard Edition",
                    "count": 1
                }
            ]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好,但问题是我无法显示"突出显示"

我期待如下结果:

.......... .......... ..........

"facets": {
    "title": {
        "_type": "terms",
        "missing": 0,
        "total": 2,
        "other": 0,
        "terms": [
            {
                "term": "<b>Java</b>Script",
                "count": 1
            },
            {
                "term": "<b>Java</b> Platform, Standard Edition",
                "count": 1
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

.......... .......... ..........

任何人都可以帮助我,告诉我我做错了什么或我错过了什么

非常感谢您的关注

jav*_*nna 8

刻面和突出显示是两个完全不同的东西.突出显示与搜索一起使用,以便为每个搜索结果返回突出显示的片段.

Faceting是一个完全不同的故事,因为在与主查询匹配的所有文档中,facet有效地查看已为特定字段编制索引的所有术语.在这方面,查询仅控制将要考虑执行分面的文档.将返回仅返回顶部术语(默认情况下具有更高计数).这些术语不仅与搜索结果(默认为10)相关,而且与所有与查询匹配的文档相关.

也就是说,从方面返回的术语从未突出显示.

如果您使用突出显示,则应在响应中看到,如参考文献中所述,新部分包含每个搜索结果的突出显示的代码段.您没有看到它的原因是您正在查询该title.autocomplete字段,但您在该title字段上突出显示已require_field_match启用.您必须设置require_field_match为true或突出显示您要查询的相同字段.但这再次与任何方面无关.


小智 7

注意使用*而不是_all.这就像所有嵌套层次的魅力一样:

POST 123821/Encounters/_search 
{ 
  "query": { 
    "query_string": { 
      "query": "Aller*" 
    } 
  }, 
  "highlight": { 
    "fields": { 
      "*": {} 
    } 
  } 
}
Run Code Online (Sandbox Code Playgroud)