文章目录

  • 一. 高级查询
  • 1.1 创建索引
  • 1.2 查询索引
  • 1.3 新增类型为user的文档
  • 1.4 查询类型为user的文档
  • 1.5 修改文档
  • 1.6 按ID查询文档
  • 1.7 删除索引
  • 1.8 查询年龄为年龄21岁
  • 1.9 查询年龄30岁-60岁之间
  • 1.10 查询年龄30岁-60岁之间并且年龄降序、查询前5条数据
  • 1.11 查询年龄30岁-60岁之间 并且年龄降序、前5条,只返回name和age字段
  • 二. DSL语言查询与过滤
  • 2.1 什么是DSL语言
  • 2.2 根据名称精确查询姓名
  • 2.3 根据汽车名称模糊查询
  • 2.4 Term与Match区别
  • 2.5 使用filter过滤年龄
  • 三. Kibana演示
  • 四. 演示文档下载

一. 高级查询

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演示

es 根据查询更新某个字段值 es查询字段长度大于的_Kibana