许多应用都倾向于在每个搜索结果中高亮部分文本片段。在Elasticsearch中检索出高亮片段也很容易。

    再次执行前面的查询,并增加一个新的highlight参数:

    1. GET /megacorp/employee/_search
    2. {
    3. "query" : {
    4. "match_phrase" : {
    5. "about" : "rock climbing"
    6. }
    7. },
    8. "highlight": {
    9. "fields" : {
    10. "about" : {}
    11. }
    12. }
    13. }

    当执行该查询时,返回结果与之前一样,与此同时还多了一个叫做highlight 的部分。这个部分包含了about属性匹配的文本片段,并以HTML 标签封装:

    {
       ...
       "hits": {
          "total":      1,
          "max_score":  0.23013961,
          "hits": [
             {
                ...
                "_score":         0.23013961,
                "_source": {
                   "first_name":  "John",
                   "last_name":   "Smith",
                   "age":         25,
                   "about":       "I love to go rock climbing",
                   "interests": [ "sports", "music" ]
                },
                "highlight": {
                   "about": [
                      "I love to go <em>rock</em> <em>climbing</em>" 
                   ]
                }
             }
          ]
       }
    }