高亮 - Highlight

POST /api/:target/_search

搜索的时候支持高亮文本

进行高亮查询需要几下几步:

  1. 启用索引中的 highlightable
  2. 在启用 highlightable 后创建文档
  3. 使用 highlight 查询数据

开启高亮

首先,在索引的 mapping 中启用突出显示功能。

更新 mapping:

POST /api/:target/_mapping

  1. {
  2. "properties": {
  3. "content": {
  4. "type": "text",
  5. "index": true,
  6. "store": true,
  7. "highlightable": true
  8. }
  9. }
  10. }

或者

在创建索引的时候设置 mapping

POST /api/index

  1. {
  2. "name": "article",
  3. "storage_type": "disk",
  4. "mappings": {
  5. "properties": {
  6. "content": {
  7. "type": "text",
  8. "index": true,
  9. "store": true,
  10. "highlightable": true
  11. }
  12. }
  13. }
  14. }

请求

POST http://localhost:4080/api/stackoverflow-6/_search

请求体:

  1. {
  2. "search_type": "match",
  3. "query": {
  4. "term": "shell window",
  5. },
  6. "from": 0,
  7. "max_results": 20,
  8. "highlight": {
  9. "pre_tags": ["<pre>"],
  10. "post_tags": ["</pre>"],
  11. "fields": {
  12. "title": {
  13. "pre_tags": [],
  14. "post_tags": []
  15. },
  16. "content": {
  17. "pre_tags": [],
  18. "post_tags": []
  19. },
  20. }
  21. }
  22. }

pre_tagspost_tags 可以为空,默认为 <mark></mark>

fields 是一个包含多个字段的映射,至少需要一个字段。

  1. {
  2. "search_type": "match",
  3. "query": {
  4. "term": "shell window",
  5. },
  6. "from": 0,
  7. "max_results": 20,
  8. "highlight": {
  9. "fields": {
  10. "content": {},
  11. }
  12. }
  13. }