es 查询语句_英语语法分析工具「建议收藏」

es 查询语句_英语语法分析工具「建议收藏」QueryDSL搜索条件越来越复杂,urlSearch会越来越长这时候就该用ElasticsearchDLS了,把搜索条件写在请求体中methodQueryDSL等同URISearch作用GE


概念介绍

search方式主要分为2类:URI Search和 body Search

在这里插入图片描述

1. URI Search

  • 操作简便,方便通过命令进行测试
  • URI Search 仅包含部分查询语法
    在这里插入图片描述

2. Body Search

  • 搜索条件越来越复杂 url Search会越来越长. 这时候就该用 Body Search了,把搜索条件写在请求体中
  • Body Search 支持完备的 Query DSL 查询语法
    在这里插入图片描述

查询语法 Query DSL

es提供的一套完整的基于json格式的结构化查询语法

1.Leaf query clauses 字段类查询

只针对某一个字段进行查询
特定字段中查找特定值

Term-level queries 单词级查询

单词匹配:精确匹配

  • 对倒排索引中存储的词项进行精确匹配操作。
  • 通常用于结构化数据:数字、日期和枚举类型

term:不分词
terms
range:用于date或number类型的字段范围查询
exists
prefix
wildcard
regexp
fuzzy
type
ids

Full text queries 全文查询

相关性分数匹配(Relevance scores)

  • 会对查询语句先进行分词处理,分词后查询语句的任何一个词项被匹配,文档就会被搜到
  • 通常针对text类型的字段进行全文检索,

match:匹配查询
match_phrase:有顺序要求
match_phrase_prefix
multi_match :多字段匹配查询
common_terms
query_string
simple_query_string

详细示例

  1. term 不分词

  2. terms
    在这里插入图片描述
    4. range 用于date或number类型的字段范围查询在这里插入图片描述

    1. match 匹配查询,用评分机制(TF/IDF)进行打分在这里插入图片描述

    2. match_all 查询所有

    3. multi_match 多字段匹配查询

    4. match_phrase 有顺序要求,查询指定段落

    5. query_string

    6. simple_query_string

2.Compound query clauses 复合查询

包含一个或多个字段类查询或者复合查询语句
以逻辑方式组合多个查询(如 bool 和 dis_max 查询)
或更改其行为(如 constant_score 查询)。

POST /_search
{ 
   
    "query":{ 
   
        "查询类型":{ 
   
            "查询条件":"查询条件值"
        }
    }
}

bool

  • bool :布尔查询由一个或多个布尔子句组成
    1. must 返回的文档必须满足must子句的条件,并且参与计算分值
    2. must_not 返回的文档必须不满足定义的条件
    3. filter 返回的文档必须满足filter子句的条件, 不计算分值
    4. should 如果没有must或者filter,有一个或者多个should子句,那么只要满足一个就可以返回

在这里插入图片描述
1. must 返回的文档必须满足must子句的条件,并且参与计算分值在这里插入图片描述
2. must_not 返回的文档必须不满足定义的条件在这里插入图片描述
3. filter 返回的文档必须满足filter子句的条件, 不计算分值
用于过滤结构化数据

将查询子句传递给 filter 参数(如 bool 查询中的 filter or must_not 参数、 constant_score 查询中的 filter 参数或 filter 聚合)时,筛选器上下文就会生效。
在这里插入图片描述
5. should 如果没有must或者filter,有一个或者多个should子句,那么只要满足一个就可以返回在这里插入图片描述
在这里插入图片描述

  • constant_score在这里插入图片描述
    在这里插入图片描述

boosting

把两个查询封装在一起并降低其中一个查询的评分

constant_score 固定评分

匹配过滤器查询条件的文档,
所有匹配的文档都被赋予相同的“常量” _score

dis_max 析取最大值

支持多并发查询
bool 查询组合了所有匹配查询的分数,
dis_max 查询则使用单个最佳匹配查询子句的分数。

function_score 函数评分

修改查询的文档得分

3. 嵌套查询 TODO

多索引查询 TODO

一个索引可以接受多个 alias 别名,而一个别名也可以映射到多个索引

索引1,索引2

聚合查询 TODO

聚合将您的数据总结为指标、统计数据或其他分析

Metric 指标聚合

根据字段值计算指标(例如总和或平均值)的指标聚合。

Bucket 存储桶聚合

存储桶聚合,根据字段值、范围或其他条件将文档分组到存储桶(也称为存储桶)中

Pipeline 管道聚合

从其他聚合而不是文档或字段获取输入。

REST API

Search APIs

_search 为endpoint,主要分为字段类查询和复合查询。

作用:搜索数据,查询语法多,功能强大

在这里插入图片描述

Cat APIs (紧凑对齐的文本 Compact and aligned)

作用:JSON很乏味,终端需要紧凑且对齐的文本
查询Elasticsearch的相关信息。包括集群中的index数量、运行状态、当前集群所在的ip,

URI Search 作用
GET _cat/ 查看cat支持的所有 endpoint 命令 ,常用:
health:集群健康信息
nodes:集群节点信息(主节点+数据节点)
allocation:集群分配信息(数据节点 与磁盘剩余)
GET _cat/【endpoint】?help 查看该endpoint 数据列含义
GET _cat/【endpoint】?v 查看该endpoint的列名+数据
GET _cat/【endpoint】?v&h=列名1,列名2… 查看指定列
GET _cat/【endpoint】?v&s=列名 指定列排序
GET _cat/【indices】?v 查看索引

Count APIs

返回符合条件的文档数

GET /{ 
   index}/_count

在这里插入图片描述

常用query

集群

kibana URI Search 作用
GET / http://IP:9200/ 查看集群信息
GET _cat/health?v http://IP:9200/_cat/health?v 查询集群健康信息
GET _cat/nodes?v http://IP:9200/_cat/nodes?v 查询集群节点信息
GET _cat/allocation?v http://IP:9200/_cat/allocation?v 查询集群数据节点信息

索引

method kibana URI Search 作用
GET GET * http://IP:9200/_cat/indices?v 查看所有索引列表
GET GET {index} http://IP:9200/{索引名称} 查看指定索引 元数据

文档

method kibana 等同 URI Search 作用
GET GET /_search 空搜索, 搜索集群 下所有文档
GET GET {index}/_search http://IP:9200/{索引名称}/_search 搜索 索引 下所有文档
GET GET {index}/{type}/_search 搜索 索引/类型 下所有文档
GET GET /_all/{type}/_search 搜索 所有索引/类型 的文档
GET GET {index}/{type}/{id} 索引/类型/id 获取唯一文档
POST GET {index}/_search + {json条件} 高级搜索
{
    QUERY_NAME: {
        FIELD_NAME: {
            ARGUMENT: VALUE,
            ARGUMENT: VALUE,...
        }
    }
}

高级搜索

url 作用
GET {index}/_search + {json条件} 高级搜索
GET /索引库名/_search
{ 
   
    "query":{ 
   
        "查询类型":{ 
   
            "查询条件":"查询条件值"
        }
    }
}
match_all 查询所有
GET /_search
{ 
   
	"query": { 
   
		"match_all": { 
   }
	}
}
match 匹配查询
GET /_search
{ 
   
	"query": { 
   
		"match": { 
   
			"price":4000.00
		}
	}
}
multi_match 多字段匹配查询

在多个字段中查询。

GET /_search
{ 
   
	"query": { 
   
		"multi_match": { 
   
			"query": "zhangsan",
			"fields": ["name","nickname"]
		}
	}
}
term 关键字精确查询

关键词匹配查询,不对查询条件进行分词

GET /_search
{ 
   
	"query": { 
   
		"term": { 
   
			"name": { 
   
				"value": "zhangsan"
			}
		}
	}
}
terms 多关键字精确查询
{
	"query": {
		"terms": {
			"name": ["zhangsan","lisi"]
		}
	}
}
range 范围查询

2019 > timestamp > 2021

{ 
   "query": 
  { 
   "bool": 
    { 
   "must": 
      [ { 
   "range": 
      		{ 
   "timestamp": 
      			{ 
   "from": "2019-05-09T18:25:01.000+0800"},
      			{ 
   "to": "2021-05-09T18:25:01.000+0800"}
      		}
        }
      ]
    }
  }
}

bool 组合查询

  • must(必须 )、must_not(必须不)、should(应该)组合查询
    在这里插入图片描述
_source 查询指定字段
{
	"_source": ["name","nickname"],
	"query": {
		"terms": {
			"nickname": ["zhangsan"]
		}
	}
}
过滤字段
  • includes / excludes过滤字段
    1. includes:来指定想要显示的字段
    2. excludes:来指定不想要显示的字段
{
	"_source": {
		"includes": ["name","nickname"]
	},
	"query": {
		"terms": {
			"nickname": ["zhangsan"]
		}
	}
}
highlight 高亮
{
	"query": {
		"match": {
			"name": "zhangsan"
		}
	},
	"highlight": {
		"pre_tags": "<font color='red'>",
		"post_tags": "</font>",
		"fields": {
			"name": {}
		}
	}
}
排序
分页查询
## 默认返回10条,可用size指定返回条数,通过from指定位移
curl 'localhost:9200/accounts/person/_search'  -d ' { "query": { "match" : { "desc" : "软件" } }, "from": 1, "size": 1 }'

query 示例数据

集群信息

  • GET http://IP:9200/
{ 
   
  "name": "eZ3dEvq",
  "cluster_name": "ElasticSearch",
  "cluster_uuid": "唯一id",
  "version": { 
   
    "number": "5.5.3",
    "build_hash": "9305a5e",
    "build_date": "2017-09-07T15:56:59.599Z",
    "build_snapshot": false,
    "lucene_version": "6.6.0"
  },
  "tagline": "You Know, for Search"
}

索引信息

method url 作用
PUT http://IP:9200/{索引名称} 创建索引
GET http://IP:9200/_cat/indices?v 查看所有索引
GET http://IP:9200/{索引名称} 查看单个索引
DELETE http://IP:9200/{索引名称} 删除索引
  • 示例数据
{ 
   
	".kibana"【索引名】: { 
   
		"aliases"【别名】: { 
   },
		"mappings"【映射 mappings信息 :修改字段和类型】: { 
   
			"timelion-sheet":{ 
   }
		},
		"settings"【settings信息 :修改分片和副本数】: { 
   
			"index"【索引】: { 
   
				"creation_date"【创建时间】: "1614265373911",
				"number_of_shards"【主分片数量】: "1",
				"number_of_replicas"【副分片数量】: "1",
				"mapper": { 
   
					"dynamic": "false"
				},
				"provided_name"【名称】: ".kibana"
				"uuid"【唯一标识】: "eI5wemRERTumxGCc1bAk2A",
				"version"【版本】: { 
   
					"created": "7080099"
				}
			}
		}
	}
}

mapping信息

  • 创建映射
curl -X PUT 'IP:9200/shopping/_mapping' -d ' { "properties": { "字段名":{ "type": " 类型 :字符串/数字/日期/数组/对象【text、keyword(不可分词)、long、short、date、integer、Array、object】", "index": 是否索引【是索引就可以用来进行搜索】, "store": false,【是否将数据进行独立存储】, "analyzer": "分词器" }, "name":{ "type": "text", "index": true }, "sex":{ "type": "text", "index": false }, "age":{ "type": "long", "index": false } } }'

文档 操作 CRUD

method url 作用
POST http://IP:9200/{索引名称}/{文档名称} 创建文档(随机id)
POST http://IP:9200/{索引名称}/{文档名称}/{id} 创建文档(指定id)
GET http://IP:9200/{索引名称}/{文档名称}/{id} 查看文档
POST http://IP:9200/{索引名称}/{文档名称}/{id} 更新文档=创建覆盖文档
POST http://IP:9200/{索引名称}/{文档名称}/{id}/_update 更新字段
DELETE http://IP:9200/{索引名称}/{文档名称}/{id} 删除文档
POST http://IP:9200/{索引名称}/_delete_by_query 条件删除文档
  • 创建文档
curl -X POST 'IP:9200/shopping/phone' -d ' { "title":"小米手机", "category":"小米10", "price":3999.00 }'
# 服务器响应结果
{ 
   
	"_index"【索引】: "shopping",
	"_type"【 类型-文档 】: "phone",
	"_id"【唯一标识】: "Xhsa2ncBlvF_7lxyCE9G", #可以类比为 MySQL 中的主键,随机生成
	"_version"【版本】: 1,
	"result"【结果】: "created", #这里的 create 表示创建成功
	"_shards"【分片】: { 
   
		"total"【分片 - 总数】: 2,
		"successful"【分片 - 成功】: 1,
		"failed"【分片 - 失败】: 0
	},
	"_seq_no": 0,
	"_primary_term": 1
}
  • 更新字段:单价改为4000
curl -X POST 'IP:9200/shopping/phone/Xhsa2ncBlvF_7lxyCE9G/_update' -d ' { "doc": { "price":4000.00 } }'
  • 删除指定id的文档
curl -X DELETE 'IP:9200/shopping/phone/{id}'
  • 条件删除文档:删除单价为4000的文档
curl -X POST 'IP:9200/shopping/phone/_delete_by_query' -d ' { "query":{ "match":{ "price":4000.00 } } }'

java api

RestClient+SearchSourceBuilder

endPoint
entity/queryStr
BoolQueryBuilder

今天的文章es 查询语句_英语语法分析工具「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/72492.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注