当前位置:   article > 正文

ElasticSearch 搜索引擎入门到实战 4--文档简单搜索_elasticsearch搜索引擎构建入门与实战

elasticsearch搜索引擎构建入门与实战

先准备好数据

  1. PUT /nba
  2. put /nba/_mapping
  3. {
  4. "properties": {
  5. "name": {
  6. "type": "text"
  7. },
  8. "team_name": {
  9. "type": "text"
  10. },
  11. "position": {
  12. "type": "text"
  13. },
  14. "play_year": {
  15. "type": "long"
  16. },
  17. "jerse_no": {
  18. "type": "keyword"
  19. }
  20. }
  21. }
  22. put nba/_doc/1
  23. {
  24. "name": "哈登",
  25. "team_name": "火箭",
  26. "position": "得分后卫",
  27. "play_year": 10,
  28. "jerse_no": "13"
  29. }
  30. put nba/_doc/2
  31. {
  32. "name": "库里",
  33. "team_name": "勇士",
  34. "position": "控球后卫",
  35. "play_year": 10,
  36. "jerse_no": "30"
  37. }
  38. put nba/_doc/3
  39. {
  40. "name": "詹姆斯",
  41. "team_name": "湖人",
  42. "position": "小前锋",
  43. "play_year": 15,
  44. "jerse_no": "23"
  45. }

term(词条)查询和full text(全文)查询

词条查询:词条查询不会分析查询条件,只有当词条和查询字符串完全匹配时,才匹配搜索
全文查询:ElasticSearch引擎会先分析查询字符串,将其拆分成多个分词,只要已分析的字段中包含词条的任意一个,或全部包含,就匹配查询条件,返回该文档;如果不包含任意一个分词,表示没有任何文档匹配查询条件

个人总结
term查询,字段的类型为keyword或其它
全文查询,字段的类型一定要是text,可以分词,否则没意义



单条term查询

  1. post /nba/_search
  2. {
  3. "query": {
  4. "term": {
  5. "jerse_no": "23"
  6. }
  7. }
  8. }

多条term查询

  1. post /nba/_search
  2. {
  3. "query": {
  4. "terms": {
  5. "jerse_no": [
  6. "23",
  7. "13"
  8. ]
  9. }
  10. }
  11. }

match_all,测试结果 返回所有,from,size可以分页

  1. post /nba/_search
  2. {
  3. "query": {
  4. "match_all": {}
  5. },
  6. "from": 0,
  7. "size": 10
  8. }

match,测试结果返回 id为1和2的记录

  1. post /nba/_search
  2. {
  3. "query": {
  4. "match": {
  5. "position": "后卫"
  6. }
  7. },
  8. "from": 0,
  9. "size": 10
  10. }
  1. POST /nba/_update/2
  2. {
  3. "doc": {
  4. "name": "库⾥",
  5. "team_name": "勇⼠",
  6. "position": "控球后卫",
  7. "play_year": 10,
  8. "jerse_no": "30",
  9. "title": "the best shooter"
  10. }
  11. }

multi_match 多字段搜索
multi_match多字段匹配的三种类型,分别是best_fields(最佳字段) 、 most_fields(多数字段) 和 cross_fields(跨字段)
best_fields类型,multi_match默认的查询类型,可以省略不写

  1. post /nba/_search
  2. {
  3. "query": {
  4. "multi_match": {
  5. "query": "卫",
  6. "fields": [
  7. "position"
  8. ],
  9. "type": "best_fields"
  10. }
  11. },
  12. "from": 0,
  13. "size": 10
  14. }

match_pharse

  1. post /nba/_search
  2. {
  3. "query": {
  4. "match_phrase": {
  5. "position": "后卫"
  6. }
  7. },
  8. "from": 0,
  9. "size": 10
  10. }

match_phrase_prefix 

  1. post /nba/_search
  2. {
  3. "query": {
  4. "match_phrase_prefix": {
  5. "position": "小"
  6. }
  7. },
  8. "from": 0,
  9. "size": 10
  10. }




 

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

闽ICP备14008679号