Elasticsearch 索引与文档的常用操作总结一
本文为博主原创,未经允许不得转载:
ES 的 Restful风格:
Restful是一种面向资源的架构风格,可以简单理解为:使用URL定位资源,用HTTP动词(GET,POST,DELETE,PUT)描述操作。 基于Restful API ES和所有客户端的交互都是使用JSON格式的数据。
GET查询
PUT添加
POST修改
DELE删除
1.索引常用操作:
1.1 创建索引:
格式: PUT /索引名称
PUT /es_db
1.2 创建索引映射
PUT /my-index { "mappings": { "properties": { "title": { "type": "text" }, "date": { "type": "date" }, "views": { "type": "integer" } } } }
1.3 设置索引参数
PUT /my-index { "settings": { "number_of_shards": 5, "number_of_replicas": 1 } }
上述示例将 "my-index" 设置为包含 5 个主分片和 1 个副本分片。
1.4 查询索引
格式: GET /索引名称
GET /es_db
1.5 删除索引
格式: DELETE /索引名称
DELETE /es_db
2.文档操作:
2.1 添加
格式: PUT /索引名称/类型/id
PUT /es_db/_doc/1
{
"name": "张三",
"sex": 1,
"age": 25,
"address": "广州天河公园",
"remark": "java developer"
}
2.2 修改
格式: PUT /索引名称/类型/id
PUT /es_db/_doc/1
{
"name": "李四",
"sex": 1,
"age": 25,
"address": "玄武湖公园",
"remark": "java developer"
}
2.3 查询
格式: GET /索引名称/类型/id
GET /es_db/_doc/1
2.4 删除
格式: DELETE /索引名称/类型/id
DELETE /es_db/_doc/1
3.查询操作
3.1 查询当前索引类型的所有文档:_search
格式: GET /索引名称/类型/_search
GET /es_db/_doc/_search
3.2 条件查询: _search?q=filed:value
# 查询age 为28 的文档
GET /es_db/_doc/_search?q=age:28
3.3 范围查询: _search?q=filed[start-value TO end-value]
格式: GET /索引名称/类型/_search?q=***[25 TO 26] 。。。。
# 查询age在25至26岁之间的
GET /es_db/_doc/_search?q=age[25 TO 26]
3.4 根据多个ID进行批量查询 _mget
格式: GET /索引名称/类型/_mget
# 查询id 为1和2的文档
GET /es_db/_doc/_mget
{
"ids":["1","2"]
}
3.5 小于等于查询: :<=
格式: GET /索引名称/类型/_search?q=filed:<=value
# 查询age 小于等于28 的文档
GET /es_db/_doc/_search?q=age:<=28
3.6 大于等于查询: :>=
格式: GET /索引名称/类型/_search?q=filed:>=value
# 查询age 小于等于28 的文档
GET /es_db/_doc/_search?q=age:>=28
3.7 分页查询: from=pageNo&size=pageSize
格式: GET /索引名称/类型/_search?q=age[25 TO 26]&from=0&size=1
# 查询age 在25到26之间的文档数据分页,从0开始,pageSize 为1
GET /es_db/_doc/_search?q=age[25 TO 26]&from=0&size=1
3.8 对查询结果只输出某些字段 _source=字段,字段
格式: GET /索引名称/类型/_search?_source=字段,字段
# 查询显示 name 与age 文档数据
GET /es_db/_doc/_search?_source=name,age
3.9 对查询结果排序 sort=字段:desc/asc
# 查询es_db 中的数据并进行age 降序排序
GET /es_db/_doc/_search?sort=age:desc
4.注意事项
在Elasticsearch中,如果使用DSL查询语句来查询一个不存在的索引或表,通常不会导致错误报告。
当使用DSL查询语句时,Elasticsearch会尝试执行查询并返回相应的结果。如果在查询中引用了一个不存在的索引或表,Elasticsearch会返回一个空的响应,其中不会包含任何匹配的结果。
这意味着即使表不存在,仍然可以发出DSL查询,并且不会引发错误。因此,在执行任何ES查询之前,最好先确认所查询的索引或表是否存在,以避免不必要的请求和处理。