文章目录
一. 高级查询
1.1 创建索引
PUT /hszsd
1.2 查询索引
GET /hszsd
1.3 新增类型为user的文档
PUT /hszsd/user/1
{
"name": "小俊",
"age": 21,
"sex": 0,
"car": "奥迪a6l"
}
PUT /hszsd/user/2
{
"name": "小红",
"age": 21,
"sex": 1,
"car": "保时捷911"
}
PUT /hszsd/user/3
{
"name": "小云",
"age": 28,
"sex": 0,
"car": "奥迪A8L"
}
PUT /hszsd/user/4
{
"name": "小腾",
"age": 50,
"sex": 0,
"car": "奔驰S级"
}
PUT /hszsd/user/5
{
"name": "小名",
"age": 48,
"sex": 0,
"car": "宝马五系"
}
1.4 查询类型为user的文档
GET /hszsd/user/_search
1.5 修改文档
PUT /hszsd/user/1?version=2
{
"name": "何金荣",
"sex": 0,
"age": 28,
"job": "JAVA架构师"
}
1.6 按ID查询文档
GET /hszsd/user/1
1.7 删除索引
DELETE /hszsd
1.8 查询年龄为年龄21岁
GET /hszsd/user/_search?q=age:21
1.9 查询年龄30岁-60岁之间
GET /hszsd/user/_search?q=age[30 TO 60]
1.10 查询年龄30岁-60岁之间并且年龄降序、查询前5条数据
GET /hszsd/user/_search?q=age[30 TO 60]&sort=age:desc&from=0&size=5
1.11 查询年龄30岁-60岁之间 并且年龄降序、前5条,只返回name和age字段
GET /hszsd/user/_search?q=age[30 TO 60]&sort=age:desc&from=0&size=5&_source=name,age
二. DSL语言查询与过滤
2.1 什么是DSL语言
ES中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL)。
由于DSL查询更为直观也更为简易,所以大都使用这种方式。
DSL查询是POST过去一个json,由于post的请求是json格式的,所以存在很多灵活性,也有很多形式。
2.2 根据名称精确查询姓名
GET /hszsd/user/_search
{
"query": {
"term": {
"name": "何金荣"
}
}
}
##term是代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇
2.3 根据汽车名称模糊查询
GET /hszsd/user/_search
{
"from": 0,
"size": 2,
"query": {
"match": {
"car": "奥迪"
}
}
}
####match查询相当于模糊匹配,只包含其中一部分关键词就行
2.4 Term与Match区别
Term查询不会对字段进行分词查询,会采用精确匹配。
Match会根据该字段的分词器,进行分词查询。
2.5 使用filter过滤年龄
GET /hszsd/user/_search
{
"query": {
"bool": {
"must": [{
"match_all": {}
}],
"filter": {
"range": {
"age": {
"gt": 21,
"lte": 51
}
}
}
}
},
"from": 0,
"size": 10,
"_source": ["name", "age"]
}
三. Kibana演示
四. 演示文档下载
链接: https://pan.baidu.com/s/14lq9aO757nXqC30ZWgOWSA 提取码: njwg