一、基本操作(回顾)
1.1.新建索引
PUT /daxia/user/1{"name":"林大侠","age": 24,"desc": "宝剑锋从磨砺出,梅花香自苦寒来","tags": ["技术宅","java大牛","架构"]}
1.2.查看数据
1.3.更新数据之PUT(不建议)
PUT /daxia/user/3{"name":"张师傅-v2","age": 30,"desc": "宝剑锋从磨砺出,梅花香自苦寒来","tags": ["k歌","安全大牛","架构"]}
1.4.更新数据之POST(推荐)
POST /daxia/user/3{"name": "张师傅-v3"}
1.5.简单的条件查询
GET /daxia/user/_search?q=name:林大侠
二、复杂操作
2.1.模糊条件查找
hit:
索引和文档信息
查询的结果数
然后就是查询出来的具体文档
数据中的东西是可以遍历出来的
分数:通过来判断谁更符合记过
GET /daxia/user/_search{"query": {"match": {"name": "大侠"}}}#! Deprecation: [types removal] Specifying types in search requests is deprecated.{"took" : 312,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 2,"relation" : "eq"},"max_score" : 1.4723402,"hits" : [{"_index" : "daxia","_type" : "user","_id" : "1","_score" : 1.4723402,"_source" : {"name" : "林大侠","age" : 24,"desc" : "宝剑锋从磨砺出,梅花香自苦寒来","tags" : ["技术宅","java大牛","架构"]}},{"_index" : "daxia","_type" : "user","_id" : "5","_score" : 1.3097506,"_source" : {"name" : "林大侠111","age" : 25,"desc" : "宝剑锋从磨砺出,梅花香自苦寒来","tags" : ["技术宅","java大牛"]}}]}}
2.2.模糊条件查找,结果过滤
GET /daxia/user/_search{"query": {"match": {"name": "大侠"}},"_source": ["name","desc"]}
2.3.模糊条件查找,排序
desc 降序、asc 升序(默认)
GET /daxia/user/_search{"query": {"match": {"name": "大侠"}},"sort": [{"age":{"order": "desc"}}]}
2.4.模糊条件查找,分页
from 从第几个数据来时
size 返回多少数据(单页面数据)
、search/{current}/{pagesize}
GET /daxia/user/_search{"query": {"match": {"name": "大侠"}},"sort": [{"age":{"order": "desc"}}],"from": 0,"size": 1}
2.5.条件查找-布尔值查询
2.5.1.must命令(类似and)
GET /daxia/user/_search{"query":{"bool": {"must": [{"match": {"name": "林大侠"}},{"match": {"age": "24"}}]}}}
2.5.2.should命令(类似or)
GET /daxia/user/_search{"query":{"bool": {"should": [{"match": {"name": "林大侠"}},{"match": {"age": "24"}}]}}}
2.5.3.must_not命令(略)
2.6.条件查找-filter数据过滤
gt:大于
lt:: 小于
gte: 大于等于
lte: 小于等于
GET /daxia/user/_search{"query":{"bool": {"must": [{"match": {"name": "林大侠"}}],"filter": {"range": {"age":{"gt": 24}}}}}}
多个条件进行过滤
GET /daxia/user/_search{"query":{"bool": {"must": [{"match": {"name": "林大侠"}}],"filter": {"range": {"age":{"gt": 23,"lt": 26}}}}}}
2.7.精确查询-term
term查询时直接通过倒排索引指定的词条进行精确查询。
关于分词:
term—直接查询精确的
match—会使用分词器解决(先分析文档,再通过分析的文档进行查询)
两个类型:
keyword类型字段:不会被分词器解析
text类型字段: 可以被分词器解析
put testdb{"mappings": {"properties": {"name": {"type": "text"},"desc": {"type": "keyword"}}}}#########################################造数据########################################PUT testdb/_doc/1{"name": "林大侠说Java name","desc": "林大侠说Java desc"}PUT testdb/_doc/2{"name": "林大侠说Java name","desc": "林大侠说Java desc2"}#################################text&keyword精确查找比对#################################GET /testdb/_search{"query": {"term": {"name": "林" #name为text类型 可以被分词 模糊匹配查询两条}}}GET /testdb/_search{"query": {"term": {"desc": "林大侠说Java desc" #desc为keyword类型 只能精确匹配一条}}}
2.7.1.keyword-不被分词
2.7.2.standard-普通分词器
2.7.3.精确查询多个值
PUT /testdb/_doc/3{"t1": "24","t2": "2021-09-11"}PUT /testdb/_doc/4{"t1": "25","t2": "2021-09-12"}GET testdb/_search{"query": {"bool": {"should": [{"term": {"t1": "24"}},{"term": {"t1": "25"}}]}}}
2.8.高亮查询-highlight
GET /daxia/user/_search{"query": {"match": {"name" : "林大侠"}},"highlight": {"fields": {"name": {}}}}
2.8.1.自定义高亮条件(pre_tags&post_tags)
GET /daxia/user/_search{"query": {"match": {"name" : "林大侠"}},"highlight": {"pre_tags": "<p class='key' style='color:red'>","post_tags": "</p>","fields": {"name": {}}}}

小结
- 匹配
- 按照条件匹配
- 精确匹配
- 区间范围匹配
- 匹配字段过滤
- 多条件查询
- 高亮查询




