ElasticSearch----常用语法(第二节)

本文详细介绍ElasticSearch的常用语法,包括索引操作、查询构造、条件查询、聚合分析,以及高级查询方法如多字段匹配、正则表达式和SQL查询。通过实例演示和Kibana可视化,帮助读者快速掌握ES核心功能。
摘要由CSDN通过智能技术生成

ElasticSearch常用语法(

上一节了解ElasticSearch与Kibana的安装与部署,我们这节来了解一下ElasticSearch的相关语法,以下语法用Kibana进行可视化操作,
登录kibana后,找到如图(study-grammer-one)
参数注释
	index	--	索引名
	_doc	--	类别(默认), es版本>=8不可设置
	id	--	索引中文档序号(唯一)
	field	--	字段名
	field_value	--	字段值
	search_field	--	检索列
	search_txt	--  检索文本

在这里插入图片描述

图 study-grammer-one
配置语法
# 查看es表头,显示es配置
	GET /_cat/health
# 查看集群中索引,
	GET /_cat/indices
# 查看某个索引中的全部数据
	GET /index/_doc/_search
# 错误语法定位
	GET /index/_validate/query?explain
	{
		"query" : {
			"match":{
				"search_field" : "search_txt"
			}
		}
	}
	
# 删除全部索引
	delete /_all
	配置 action.destructive_requires_name: true 后,不在起作用
# 文本指定分词解析
	analyze_category	--	分词类别
	text	--	文本
	GET /_analyze
	{
		"analyzer":"analyze_category",
		"text":"analyze_words"
	}
# 文本指定某索引文词解析
	GET /index/_analyze
	{
		"analyzer":"analyze_category",
		"text":"analyze_words"
	}
# 查看索引映射
	GET /index/_mapping
# 查看索引设置
	GET /index/_settings
基础语法 (创建,修改,查询,删除)
# 创建
	PUT /index/_doc/id
	{
		"field_A":"field_value",
		"field_B":"field_value"
	}
# 修改
	全局修改
	PUT /index/_doc/id
	{
		"field_A":"field_value",
		"field_B":"field_value"
	}
	局部修改
	POST /index/_doc/id/_update
	{
		"doc":{
			"field_A":"field_value"
		}
	}
# 查询(简单查询, 复杂后续介绍)
	query, match均为关键词
	GET /index/_search
	{
		"query":{
			"match":{
				"search_field":"search_txt"
			}
		}
	}
# 删除
	一个
	delete /index
	多个
	delete /index_one,index_two
	模糊匹配(前缀为 index)
	delete /index*
	全部
	delete /_all
查询语法

引用外部文档地址,在如下部分有引用, 具体含义自行看文档
  1, 组合查询
  2, 精确查询
  3, 全文检索
  4, 范围检索
  5, multi_match 检索
  6, 前缀匹配
  7, 正则匹配
  8, 游标查询
  9, 聚合查询
    9.1 聚合排序
  10, es-sql查询
  11, 设置索引别名

# 查询索引信息,如下代码库(search--icode--one)
	GET /index/_search
		字段解释
			took	--	耗费了几毫秒
			timed_out	--	是否超时
			_shards	--	到几个分片搜索,成功几个,跳过几个,失败几个。
			hits.total	--	查询结果数量
			hits.score	--	分数,查询相关度,分数越高相关度越高
			hits.hits	--	查询document结果
# 条件查询
	# simple search
		GET /index/_search?q=search_field_A:search_txt
	
		# prccise query(精确查询)
			等同于 = ,不进行分词检索(keywords)
			GET /index/_search
			{
				"query":{
					"term":{
						"search_price":20
					}
				}
			}
		# fulltext query(全文检索)
			GET /index/_search
			{
				"query" : {
					"match":{
						"search_field_A":"search_txt"
					}
				}
			}
		# range query(范围检索)
			GET /index/_search
			{
				"query" : {
					"range":{
						"search_field":{
							"gte":20,
							"lte":30
						}
					}
				}
			}
		# multi_match query(此处 多字段为 or 的关系)
			minimum_should_match	--	查询精度可用数字 | % 
			tie_breaker	--	0~1的浮点数参与查询评分
			GET /index/_search
			{
				"query" : {
					"multi_match":{
						"query":"query_txt",
						"type":"best_fields",
						"fields":["search_field_A","search_field_B"],
						"minimum_should_match":1,
						"tie_breaker":0.3
					}
				}
			}
		# page query (翻页查询)
			from --	从那条记录开始查
			GET /index/_search
			{
				"query" : {
					"match_all":{
						
					}
				},
				"size":1,
				"from":0
			}
	# exists field query (查询字段存在的数据)
			GET /index/_search
			{
				"query" : {
					"exists":{
						"field":"search_field_A" 
					}
				}
			}
	# id query (多个id匹配)
			GET /index/_search
			{
				"query" : {
					"ids":{
						"values":[1,2]
					}
				}
			}
	#  prefix query (前缀查询)
			GET /index/_search
			{
				"query" : {
					"prefix":{
						"search_field_A":{
							"value" : "search_txt"
						}
					}
				}
			}
	# regexp query (正则查询)
			GET /index/_search
			{
				"query" : {
					"regexp":{
						"search_field_A":{
							"value" :"o.*e",
							"flags":"ALL"
						}
					}
				}
			}
	# scroll query (游标查询, 返回请看图 search-icode-two)
		# 注 : 返回结果集中有下次必传的_scroll_id
		# scroll	--	关键词,
		# 1m	--	表示1分钟
		# 首次查询
			GET /index/_search?scroll=1m
			{
				"scroll":"1m"
			}
		# 携带查询 scroll_id
			GET /_search/scroll
			{
				"scroll":"1m",
				"scroll_id": "_scroll_id"
			}
	# advanced query
		组合查询 + sort 
		注:
			1,组合可相互嵌套
			2。sort排序字段类别必须为keywords, 否则排序需要增加设置
				2.1,fielddate:true 设置后text字段类型即可,但不准确
				2.2,设置子字段(具体请看后续索引字段设置)
		sql语句对照便于理解
			select * from index where
			 (
				(search_field_A = search_txt) 
				and 
				 (
					(search_field_A != search_field_A and search_field_A != search_txt_C) 
					or 
					search_field_B = search_txt_D 
				)
			) 
			order by search_field_C desc | asc
			等同于
			GET /index/_search
			{
				"query":{
					"bool":{
						"must":{
							"match":{
									"search_field_A":"search_txt"
								}
							},
						"should":[
							{
								"bool":{
									"must_not":[
										{"match":{"search_field_A":"search_txt_C"}},
										{"match":{"search_field_A":"search_txt_C"}}
									]
								}
							},
							{"term":{"search_field_B":"search_txt_D"}}
						]
					}
				},
				"sort":[
					{
						"search_field_C":{
							"order":"desc|asc"
						}
					}		
				]
			}
	# 聚合查询
		类似于SQL中的 count, max 等查询
		terms 	<--->	sql->count
		max	<--->	sql->max
		min	<--->	sql->min
		sum	<--->	sql->sum
		avg	<--->	sql->avg
		注: 
			★ bucket(桶): 等同于组。
			★ metric:某一个组中的数据统计
			terms 操作的字段类型必须是keyword | fielddata=true, 建议使用第一种因第二种会增大es存储。
			聚合查询可嵌套, 并可排序详情请看 9.1 聚合排序
			
		GET /index/_search
		{
			"aggs":{
				"count_category":{
					"terms":{"field":"field_category"}
				},
				"max_price":{
					"max":{"field":"field_price"}
				},
				"min_price":{
					"min":{"field":"field_price"}
				},
				"sum_price":{
					"sum":{"field":"field_price"}
				},
				"avg_price":{
					"avg":{"field":"field_price"}
				}
			}
		}
	# es7-sql查询
		注:
			format=txt	--	表示返回的格式,具体格式请看(10.es-sql查询)
	 	POST /_sql?format=txt
	 	{
			"query":"select * from index_name"
		}
	# 设置索引别名
		注 : 
			default_index, default_ohher_index	--	别名称
		way-one
			PUT /index
			{
				"aliases":{
					"default_index":{},
					"default_other_index":{}
				}
			}
		way-two
			POST /_aliases
			{
				"actions":[
					{"remove":{"index":"index_name","alias":"alias_name"}},
					{"add":{"index":"index_name","alias":"alias_name"}}
				]
			}
{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "index",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "field_A" : "field_value2",
          "field_B" : "field_value1"
        }
      }
    ]
  }
}
图: search--icode--one

在这里插入图片描述

图: search--icode--two
总结

  文档转载
    ElasticSearch官方文档
    禁止转载,违者必究
  补录
  第一节,ElasticSearch----安装部署
  第二节,ElasticSearch----语法学习
  第三节,ElasticSearch----索引详解
  第四节,ElasticSearch----IK分词器
  第五节,ElasticSearch----PHP交互

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值