ES常用查询命令
一、基础配置查看
GET /_cluster/health
{ "cluster_name" : "es-cluster", "status" : "green", #集群状态,分为green、yellow和red "timed_out" : false, "number_of_nodes" : 2, #集群的节点数 "number_of_data_nodes" : 2, #数据节点数 "active_primary_shards" : 88, #集群中所有活跃的主分片数。 "active_shards" : 116, #集群中所有活跃的分片数。 "relocating_shards" : 0, #当前节点迁往其他节点的分片数量,通常为0,当有节点加入或者退出时该值会增加。 "initializing_shards" : 0, #正在初始化的分片。 "unassigned_shards" : 0, #未分配的分片数,通常为0,当有某个节点的副本分片丢失该值就会增加。 "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, #是指主节点创建索引并分配shards等任务,如果该指标数值一直未减小代表集群存在不稳定因素 "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 #集群分片健康度,活跃分片数占总分片数比例。 }
二、常用数据操作
一、查看所有索引
GET _cat/indices
二、match查询
match关键字,相当于MySQL数据库中的like查询,match查询的字段如果是text类型,那么text会被分词,match就会匹配分词,查询所有包含分词的doc文档,
如果不是text类型的,那么就是精确查询。
- match条件查询
GET 索引名称/_search { "query": { "match": { "查询字段": "查询值" } } }
- match_all查询所有数据,默认是10条,因为ES默认分页是10条数据,这个关键字不能写查询条件。
GET 索引名称/_search { "query": { "match_all": {} } }
- match_phrase:匹配短语,match是会查询所有包含分词的doc文档,而match_phrase则是匹配整个短语,才会返回对应的doc文档。
- match_phrase_prefix:匹配短语的前缀部分,这个只能使用在text类型字段。
三、过滤字段
第一种:_source=false,表示所有字段都不返回。
第二种:_source: ["username", "age"],只返回指定的字段。
GET 索引名称/_search { "query": { "match": { "查询字段": "查询值" } } , "_source": ["查询字段1","查询字段2","查询字段3"] }
四、must布尔查询
条件查询中的【must】和mysql数据库中的【and】是相同作用,【must】接收一个数组,数组中的所有条件都成立,这个时候才会查询对应数据。
GET 索引名称/_search { "query": { "bool": { "must": [ { "terms": { "查询字段": ["查询值1","查询值2"] } } ] } }, "_source": ["查询字段1","查询字段2"] }
GET 索引名称/_search { "query": { "bool": { "must": [ { "match": { "查询字段": "查询值" }, "match": { "查询字段": "查询值" } } ] } }, "_source": ["查询字段1","查询字段2"] }
五、should布尔查询
既然有and运算,那当然少不了or运算,ES中使用【should】表示或运算,相当于mysql数据库中的【or】连接符。
GET 索引名称/_search { "query": { "bool": { "should": [ { "match": { "查询字段": "查询值" }, "match": { "查询字段": "查询值" } } ] } }, "_source": ["查询字段1","查询字段2"] }
六、must_not布尔查询
must_not是非运算,相当于mysql数据库中的【!】非运算,即:【not】。
GET 索引名称/_search { "query": { "bool": { "must_not": [ { "match": { "查询字段": "查询值" } } ] } }, "_source": ["查询字段1","查询字段2"] }
七、filter过滤查询
filter是用于过滤查询的关键字,在filter里面可以使用多种查询条件,例如:range、term、terms、exists、ids几种常见的查询,
- range范围查询,范围查询首先需要指定范围,下面是几个常见的范围关键字。
- gt:大于。
- lt:小于。
- gte:大于等于。
- lte:小于等于。
- eq:等于。
- ne:不等于。
# 10<=查询字段<=20
GET 索引名称/_search { "query": { "bool": { "filter": [ { "range": { "查询字段": { "gte": 10, "lte": 20 } } } ] } } }
2.exists是否存在
GET 索引名称/_search { "query": { "bool": { "filter": [ { "exists": { "查询字段":"字段值" } } ] } } }
3.ids过滤查询
ids查询,这就相当于mysql数据库中的【in】条件查询,多个条件值查询,但是这里的只能够对
GET 索引名称/_search { "query": { "bool": { "filter": [ { "ids": { "values":["字段值1","字段值2"] } } ] } } }
4.term关键词查询
term表示关键字查询,即:判断doc文档里面是否包含给定的term关键字,如果包含,则满足条件,否则不满足。
GET 索引名称/_search { "query": { "bool": { "filter": [ { "term": { "查询字段":"字段值" } } ] } } }
5.terms多关键词查询
term每次只能够匹配一个关键字,而terms则允许多个关键字匹配。
GET 索引名称/_search { "query": { "bool": { "filter": [ { "terms": { "查询字段":["字段值1","字段值2"] } } ] } } }
本文来自博客园,作者:曾经已是追忆,转载请注明原文链接:https://www.cnblogs.com/hehanhan/p/18323131