当前位置:   article > 正文

六.Elasticsearch教程 - ElasticSearch高亮显示_elasticsearch跨文件搜索 高亮显示

elasticsearch跨文件搜索 高亮显示

注:version:elasticsearch-7.11.2

添加测试数据

  1. #新建索引
  2. PUT /high_light_test
  3. {
  4. "mappings": {
  5. "properties": {
  6. "title": {
  7. "type": "text",
  8. "analyzer": "ik_max_word"
  9. },
  10. "content": {
  11. "type": "text",
  12. "analyzer": "ik_max_word"
  13. }
  14. }
  15. },
  16. "settings": {
  17. "number_of_shards": 1,
  18. "number_of_replicas": 0
  19. }
  20. }
  21. #或者用这种写法新建索引,可以设置默认分词器
  22. PUT /high_light_test
  23. {
  24. "settings" : {
  25. "index" : {
  26. "analysis.analyzer.default.type": "ik_max_word"
  27. },
  28. "number_of_shards": 1,
  29. "number_of_replicas": 0
  30. }
  31. }
  32. PUT /high_light_test/_doc/1
  33. {
  34. "title": "2021年最新好看的电影推荐",
  35. "content": "新年又到了,2021年最新好看的电影有不少,我给大家推荐几部:balabala"
  36. }

一.高亮显示语法

  1. #单条件查询高亮显示
  2. GET /high_light_test/_search
  3. {
  4. "query": {
  5. "match": {
  6. "title": "最新电影推荐"
  7. }
  8. },
  9. "highlight": {
  10. "fields": {
  11. "title": {}
  12. }
  13. }
  14. }
  15. #组合查询高亮显示。在 highlight 里面填写要高亮显示的字段
  16. GET /high_light_test/_search
  17. {
  18. "query": {
  19. "bool": {
  20. "should": [
  21. {
  22. "match": {
  23. "title": "新电影"
  24. }
  25. },
  26. {
  27. "match": {
  28. "content": "最新电影推荐"
  29. }
  30. }
  31. ]
  32. }
  33. },
  34. "highlight": {
  35. "fields": {
  36. "title": {},
  37. "content": {}
  38. }
  39. }
  40. }

image.png

<em>会让搜索词红色高亮显示

image.png

设置高亮字体颜色

高亮字体默认显示红色,我们也可以改变高亮字体的颜色。例:

(fields: * 代表所有field都高亮显示)

  1. #组合查询高亮显示
  2. GET /high_light_test/_search
  3. {
  4. "query": {
  5. "bool": {
  6. "should": [
  7. {
  8. "match": {
  9. "title": "最新电影推荐"
  10. }
  11. },
  12. {
  13. "match": {
  14. "content": "最新电影推荐"
  15. }
  16. }
  17. ]
  18. }
  19. },
  20. "highlight": {
  21. "require_field_match": false,
  22. "fields": {
  23. "*": {
  24. "pre_tags": [
  25. "<font color='yellow'>"
  26. ],
  27. "post_tags": [
  28. "</font>"
  29. ]
  30. }
  31. }
  32. }
  33. }

image.png

二.ElasticSearch三种高亮的方式

第一种:plain highlight

默认的高亮方式,也是lucene自带的高亮方式

第二种:posting highlight

用法:在 mappings 里指定 index_options=offsets

优点:(1)性能比plain highlight要高,因为不需要重新对高亮文本进行分词

     (2)对磁盘的消耗更少

例:

  1. #删除旧索引
  2. DELETE /high_light_test
  3. #重建索引,指定content的 "index_options": "offsets"
  4. PUT /high_light_test
  5. {
  6. "mappings": {
  7. "properties": {
  8. "title": {
  9. "type": "text",
  10. "analyzer": "ik_max_word"
  11. },
  12. "content": {
  13. "type": "text",
  14. "analyzer": "ik_max_word",
  15. "index_options": "offsets"
  16. }
  17. }
  18. },
  19. "settings": {
  20. "number_of_shards": 1,
  21. "number_of_replicas": 0
  22. }
  23. }
  24. #重新添加一下测试数据
  25. PUT /high_light_test/_doc/1
  26. {
  27. "title": "2021年最新好看的电影推荐",
  28. "content": "新年又到了,2021年最新好看的电影有不少,我给大家推荐几部:balabala"
  29. }

高亮查询:

image.png

测试结果看不出差别

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/499070
推荐阅读
相关标签