许多应用都倾向于在每个搜索结果中 高亮 部分文本片段,以便让用户知道为何该文档符合查询条件。在 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 标签 封装:

    1. {
    2. ...
    3. "hits": {
    4. "total": 1,
    5. "max_score": 0.23013961,
    6. "hits": [
    7. {
    8. ...
    9. "_score": 0.23013961,
    10. "_source": {
    11. "first_name": "John",
    12. "last_name": "Smith",
    13. "age": 25,
    14. "about": "I love to go rock climbing",
    15. "interests": [ "sports", "music" ]
    16. },
    17. "highlight": {
    18. "about": [
    19. "I love to go <em>rock</em> <em>climbing</em>"
    20. ]
    21. }
    22. }
    23. ]
    24. }
    25. }