elasticsearch系统学习笔记3-数据基本操作
2022/1/28 23:35:16
本文主要是介绍elasticsearch系统学习笔记3-数据基本操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
elasticsearch系统学习笔记3-数据基本操作
- 插入数据
- 修改数据
- 查询一个文档
- 删除文档
- Query DSL
- 分页
- _source
- sort
- query
插入数据
语法:
PUT /{index}/{type}/{id} { "field": "value", ... }
例子:
PUT /order/_doc/1 { "id": 1, "shop_id": 1, "user_id": 11, "create_at": "2019-12-12 12:20:22" }
修改数据
更新整个文档语法跟前面介绍的插入文档的语法一模一样,只要ID相同就会直接覆盖之前的文档
虽然说elasticsearch支持通过Api更新文档,但是ES底层文档是不可变的,每次修改文档,本质上是创建一个新的文档,然后把老的文档标记成删除。
查询一个文档
语法:
GET /{index}/{type}/{id}
例子:
GET /order/_doc/1
删除文档
语法:
DELETE /{index}/{type}/{id}
例子:
DELETE /order/_doc/1
Query DSL
- 查询基本语法结构
GET /{索引名}/_search { "from" : 0, // 返回搜索结果的开始位置 "size" : 10, // 分页大小,一次返回多少数据 "_source" :[ "field1","field2" ], // 需要返回的字段数组 "query" : { }, // query子句 "aggs" : { }, // 聚合子句 主要用来编写统计分析语句 "sort" : { } // 排序子句 设置排序条件 }
{索引名},支持支持一次搜索多个索引,多个索引使用逗号分隔,例子: GET /order1,order2/_search
按前缀匹配索引名: GET /order*/_search 搜索索引名以order开头的索引
查询语句,返回的JSON数据格式如下
{ "took": 5, // 查询消耗时间,单位毫秒 "timed_out": false, // 查询是否超时 "_shards": { // 本次查询参与的ES分片信息,查询中参与分片的总数,以及这些分片成功了多少个失败了多少个 "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { // hits字段包含我们搜索匹配的结果 "total": 1, // 匹配到的文档总数 "max_score": 1.0, // 匹配到的最大分值 "hits": [ // 这里就是我们具体的搜索结果,是一个JSON文档数组 ] } }
分页
- from 开始位置
- size 当前页大小
GET /order/_search { "from": 20, "size": 10 }
_source
结果数据只返回 _source 标注的字段值
GET /order/_search { "_source": [ "shop_id", "user_id" ] }
sort
语法:
GET /{索引名}/_search { "query": { // ...查询条件.... }, "sort": [ { "{Field1}": { // 排序字段1 "order": "desc" // 排序方向,asc或者desc, 升序和降序 } }, { "{Field2}": { // 排序字段2 "order": "desc" // 排序方向,asc或者desc, 升序和降序 } } // ....多个排序字段..... ] }
例子:
GET /order/_search { "query": { "match_all": {} }, "sort": [ { "user_id": { "order": "desc" } }, { "shop_id": { "order": "asc" } } ] }
query
- 匹配单个字段
GET /{索引名}/_search { "query": { "match": { "{FIELD}": "{TEXT}" } } }
如果 {FIELD} 字段的数据类型是 text 类型,搜索关键词会进行分词处理
- 精确匹配单个字段
精确匹配是指等值匹配,不需要进行分词处理,例如:订单号、手机号、时间字段
GET /{索引名}/_search { "query": { "term": { "{FIELD}": "{VALUE}" } } }
类似: select * from order_v2 where order_no = “202003131209120999”
- 包含
GET /{索引名}/_search { "query": { "terms": [ "{VALUE1}", "{VALUE2}" ] } }
类似: select * from order_v2 where shop_id in (123,100,300)
- 范围匹配
GET /{索引名}/_search { "query": { "range": { "{FIELD}": { "gte": 10, "lte": 20 } } } }
范围参数如下:
- gt - 大于 ( > )
- gte - 大于且等于 ( >= )
- lt - 小于 ( < )
- lte - 小于且等于 ( <= )
类似: select * from order_v2 where shop_id >= 10 and shop_id <= 20
这篇关于elasticsearch系统学习笔记3-数据基本操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享
- 2024-11-22ansible 的archive 参数是什么意思?-icode9专业技术文章分享
- 2024-11-22ansible 中怎么只用archive 排除某个目录?-icode9专业技术文章分享
- 2024-11-22exclude_path参数是什么作用?-icode9专业技术文章分享
- 2024-11-22微信开放平台第三方平台什么时候调用数据预拉取和数据周期性更新接口?-icode9专业技术文章分享
- 2024-11-22uniapp 实现聊天消息会话的列表功能怎么实现?-icode9专业技术文章分享
- 2024-11-22在Mac系统上将图片中的文字提取出来有哪些方法?-icode9专业技术文章分享
- 2024-11-22excel 表格中怎么固定一行显示不滚动?-icode9专业技术文章分享
- 2024-11-22怎么将 -rwxr-xr-x 修改为 drwxr-xr-x?-icode9专业技术文章分享
- 2024-11-22在Excel中怎么将小数向上取整到最接近的整数?-icode9专业技术文章分享