es查询所欲_ES常用查询命令

本文介绍了ElasticSearch的基本概念,如Index、Type、Document等与MySQL的对应关系。还给出了节点、索引、文档和DSL的操作命令,包括查看、创建、删除、查询和更新等,使用curl命令结合JSON格式的查询语句实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ElasticSearch的基本概念:

Index 类似于mysql数据库中的database

Type 类似于mysql数据库中的table表,es中可以在Index中建立type(table),通过mapping进行映射(6.0的版本不允许一个index下面有多个type,并且官方说是在接下来的7.0版本中会删掉type)

Document 由于es存储的数据是文档型的,一条数据对应一篇文档即相当于mysql数据库中的一行数据row,一个文档中可以有多个字段也就是mysql数据库一行可以有多列

Field es中一个文档中对应的多个列与mysql数据库中每一列对应

Mapping 可以理解为mysql或者solr中对应的schema,只不过有些时候es中的mapping增加了动态识别功

indexed 就是名义上的建立索引

Query DSL 类似于mysql的sql语句,只不过在es中是使用的json格式的查询语句,专业术语就叫:QueryDSL GET/PUT/POST/DELETE

1、节点

#查看节点信息

curl -XGET 'http://127.0.0.1:9200/_cat/nodes?v'

#查看所有节点信息

curl -XGET 'http://127.0.0.1:9200/_nodes?pretty=true'

#查看指定节点的信息

curl -XGET 'http://127.0.0.1:9200/_nodes/nodeName?pretty=true'

2、索引

#查看所有索引

curl -XGET 'http://localhost:9200/_cat/indices?v'

#创建索引

curl -XPUT "http://localhost:9200/test_index"

#创建索引,指定分片和副本的数量

curl -H "Content-Type: application/json" -XPUT "http://localhost:9200/test_index?pretty" -d'

{

"settings": {

"number_of_shards": 2,

"number_of_replicas": 1

}

}'

#创建索引(test_index)、创建类型(product)、指定mapping的数据

curl -H "Content-Type: application/json" -XPUT "http://localhost:9200/test_index?pretty" -d'

{

"mappings": {

"product" : {

"properties": {

"id" : {

"type": "text",

"index": "false"

},

"userName" : {

"type": "text",

"index": "true"

}

}

}

}

}'

#在已创建的索引下添加类型的mapping

curl -H "Content-Type: application/json" -XPUT 'http://localhost:9200/test_index/person/_mapping?pretty' -d '{

"person" : {

"properties" : {

"date" : {

"type" : "long"

},

"name" : {

"type" : "text",

"index" : "false"

},

"status" : {

"type" : "integer"

},

"type" : {

"type" : "integer"

}

}

}

}'

#获取索引信息

curl -XGET "http://localhost:9200/test_index?pretty"

#查看索引的统计信息

curl -XGET "http://localhost:9200/test_index/_stats?pretty"

#获取索引的mappings

curl -XGET "http://localhost:9200/test_index/_mappings?pretty"

#删除索引

curl -XDELETE "http://localhost:9200/test_index"

3、文档

#插入数据

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/person/?pretty' -d '{"date":11222, "name": "abc", "status": 1,"type":134}'

#查询索引中的全部内容

curl -XGET "http://localhost:9200/test_index/_search?pretty"

#查询某个type的内容

curl -XGET "http://localhost:9200/test_index/person/_search?pretty"

#根据文档的id查询文档,如果需要查询多个字段使用逗号进行隔开,不指定就是显示全部字段

curl -XGET "http://localhost:9200/test_index/person/zbyJjXYB2UzVbYB2ykZa?_source=name,type&pretty"

#根据条件进行简单查询

curl -XGET "http://localhost:9200/test_index/person/_search?q=name:&pretty"

#更新文档内容

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/person/0LyYjXYB2UzVbYB2qUZi/_update?pretty' -d '{"doc":{ "name": "wxg111", "status": 1,"type":134}}'

#删除文档内容

curl -XDELETE "http://localhost:9200/test_index/person/zryOjXYB2UzVbYB2AkbI?&pretty"

4、DSL

#查询索引下所有文档

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/_search?pretty' -d '{"query": { "match_all": {} }}'

#查询索引下所有文档,并返回第一个文档

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/_search?pretty' -d '{"query": { "match_all": {} },"size":1}'

#匹配所有并返回第1到10

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/_search?pretty' -d '{"query": { "match_all": {} },"from": 0,"size": 10}'

#根据属性降序排序(size未指定默认为10)

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/_search?pretty' -d '{"query": { "match_all": {} },"sort": {"status": { "order": "desc" }}}'

#返回name和status这2个fields(_source里),相当于sql:SELECT name, status FROM....

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/_search?pretty' -d '{"query": { "match_all": {} },"_source": ["name", "status"]}'

#返回status为1的,相当于sql的WHERE

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/_search?pretty' -d '{"query": { "match": { "status": 1 } }}'

#返回type=77 && status=1的文档

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/_search?pretty' -d '{"query": {"bool": {"must": [{ "match": { "type": 77 } },{ "match": { "status": 1 } }]}}}'

#返回type=77 || status=1的文档

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/_search?pretty' -d '{"query": {"bool": {"should": [{ "match": { "type": 77 } },{ "match": { "status": 1 } }]}}}'

#返回type=77 非 status=1的文档

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/_search?pretty' -d '{"query": {"bool": {"must_not": [{ "match": { "type": 77 } },{ "match": { "status": 1 } }]}}}'

#返回type是134但status不是2的

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/_search?pretty' -d '{"query": {"bool": { "must": [{ "match": { "type": 134 } }],"must_not": [{ "match": { "status": 2 } }]}}}'

# 相当于sql: SELECT COUNT() from bank GROUP BY state ORDER BY COUNT() DESC。

#「size=0」是设置不显示search hit

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/_search?pretty' -d '{"size": 0,"aggs": {"group_by_state": {"terms": {"field": "status"}}}}'

#按state分组并计算(组)平均balance(默认返回前10个按state的COUNT的降序(DESC)排)

curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/test_index/_search?pretty' -d '{"size": 0,"aggs": {"group_by_state": {"terms": {"field": "status"},"aggs": {"average_balance": {"avg": {"field": "type"}}}}}}'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值