[ELK实战] Elasticsearch 常用操作 (基于DSL)
方法 / 步骤
一: 前置工作
1.1 导入数据
POST /staff/_bulk
{"index":{"_id":1}}
{"name":"zs","realname":"张三","age":10,"birthday":"2018-12-27","salary":1000.0,"address":"北京市北海公园"}
{"index":{"_id":2}}
{"name":"ls","realname":"李四","age":20,"birthday":"2017-10-20","salary":2000.0,"address":"北京市京东大峡谷"}
{"index":{"_id":3}}
{"name":"ww","realname":"王五","age":30,"birthday":"2016-03-15","salary":3000.0,"address":"北京市陶然亭"}
{"index":{"_id":4}}
{"name":"zl","realname":"赵六","age":40,"birthday":"2003-04-19","salary":4000.0,"address":"北京市玉渊潭"}
{"index":{"_id":5}}
{"name":"tq","realname":"田七","age":50,"birthday":"2001-08-11","salary":5000.0,"address":"北京市圆明园"}
1.2 常用DSL
# 查看集群的健康值:
GET _cat/health#查询当前用户下的所有索引
GET /_cat/indices# # 测试分词器
POST /_analyze
{"text":"工程师","analyzer":"ik_max_word"
}# 查看某个索引属性
GET {index_name}
#查看指定索引文档总数
GET {index_name}/_count
#按照文档数量排序索引
GET _cat/indices?v&s=docs.count:desc
# 根据ID便捷查询索引文件
GET {index_name}/_doc/{index_id}#创建索引库
PUT page#删除索引
DELETE /page
二: 创建相关
2.1 创建索引,指定mapping(映射关系)
索引库一旦mapping创建后无法修改和删除,但是可以添加新的字段
为什么不能修改一个字段的type?原因是一个字段的类型修改以后,那么该字段的所有数据都需要重新索引。Elasticsearch底层使用的是lucene库,字段类型修改以后索引和搜索要涉及分词方式等操作。
PUT /store
{"mappings": {"properties": {"id":{"type": "integer"},"en_name":{"type": "keyword"},"zn_name":{"type": "text"},"creat_time":{"type": "date"},"state_owned":{"type": "boolean"},"address":{"type": "text","analyzer": "ik_max_word","search_analyzer": "ik_smart"},"employees":{"type": "integer_range"}}}
}
2.2 新增Mapping映射
POST /{index_name}/_mapping
{"properties": {"phone":{"type": "keyword"}}
}
三: 查询操作
3.1 query 查询
query 下面的参数有 match /
// match分词匹配,必须使用分词 text字段
GET {index_name}/_search
{"query": {"match": {"name": "operator red sea"}}
}// 查询某个具体值
GET {index_name}/_search
{"query": {"match": {"actorList.name": "zhang han yu"}}
}// 过滤查询
// term 值等匹配 必须用keyword类型字段
// term 中的词是不会被分词的,但es默认会将数据中的词进行分词所以除非是分词内的,否则term中查不到该分词
GET {index_name}/_search
{"query": {"term": {"user.id": {"value": "kimchy","boost": 1.0}}}
}// 短语匹配 类似于 like '%xxxx%'
GET {index_name}/_search
{"query": {"match_phrase": {"actorList.name": "zhang han yu"}}
}// fuzzy查询,模糊匹配(容错匹配)
GET {index_name}/_search
{"query": {"fuzzy": {"name": "rad"}}
}
3.2 范围查询
// 范围过滤
GET {index_name}/_search
{"query": {"range": {"doubanScore": {"gte": 6,"lte": 9}}}
}
3.3 混合查询
// 混合查询方式 1、先匹配,再过滤 2、同时匹配加过滤//1.先匹配,再过滤
GET {index_name}/_search
{"query": {"bool": {"filter": [{ "term": { "color": "red" }},{ "term": { "brand": "gucci" }}]}}
}
//或者//1.先匹配,再过滤
GET {index_name}/_search
{"query": {"match": {"name": "red"}},"post_filter": {"term": {"actorList.id.keyword": "ygc"}}
}
//2.同时匹配加过滤
GET {index_name}/_search
{"query": {"bool": {"must": [{"match": {"name": "red"}}],"filter": {"term": {"actorList.id.keyword": "ygc"}}}}
}
3.4 分页查询
// 分页查询,类似于limit
// from = (pageNo-1)*size
// 指定的查询字段"_source":
// 高亮highlight
GET {index_name}/_search
{"query": {"match": {"name": "red"}},"highlight": {"fields": {"name": "name": {"pre_tags": "<span color='red'>","post_tags": "</span>"}}},"_source": ["name","doubanScore"], "from": 0,"size": 20
}
四: 更新操作
- 覆盖方式更新(会把旧数据替换掉)
PUT / {index_name}/{index_id}?refresh=true
{"properties":{"age":{"type":"integer","index": false}}
}
- 部分更新
# 如果数据不存在,会报错
POST {index_name}/_update/{index_id}?refresh=true
{"doc": {"name": "胡八一"}
}# 如果我们想要这样的效果:如果数据不存在,则作为新数据添加
POST {index_name}/_update/{index_id}?refresh=true
{"doc": {"name": "胡八一"},"doc_as_upsert": true
}
五: 删除操作
- 直接删除索引
DELETE index-name
DELETE entry_record
六: 聚合查询
- 聚合查询可以查看下面的文章
Elasticsearch 聚合查询一: Metric/指标聚合
Elasticsearch 聚合查询二: Bucketing/桶聚合
参考资料 & 致谢
[1] 官方文档
[ELK实战] Elasticsearch 常用操作 (基于DSL)相关推荐
- Spark SQL概述,DataFrames,创建DataFrames的案例,DataFrame常用操作(DSL风格语法),sql风格语法
一. Spark SQL 1. Spark SQL概述 1.1. 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作 ...
- linux的常用操作——基于ftp的windows10和腾讯云centos操作系统之间的文件上传和下载
\qquad在腾讯云服务器的centos操作系统上,安装vsftpd并进行配置,然后基于ftp实现windows10操作系统和腾讯云centos系统之间的文件上传和下载. 文章目录 1.基于腾讯云服务 ...
- Elasticsearch常用操作:集群管理篇
[TOC] 0 说明 基于es 5.6,可以参考官方文档: cat API:https://www.elastic.co/guide/en/elasticsearch/reference/5.6/ca ...
- 聊一聊Elasticsearch和MySQL的常用操作
前言 ElasticSearch,开源的搜索和数据分析引擎,也是名列前茅的 nosql. 很多时候会想拿它和关系型数据库做对比,严格上它们是没有太多可比性的. 不过把有的东西放在一起比较,会帮助我们快 ...
- MongoDB实战系列之二:MongoDB的常用操作
#以服务方式启动mongodb,要求验证 /elain/apps/mongodb/bin/mongod --fork --port 27001 --auth --dbpath /elain/data/ ...
- 隔壁老王的女朋友都能学会的ELK实战之elasticsearch
文章目录 准备工作 本文所用操作系统: 系统详细信息: 系统内核: 系统版本: 系统内存 本文所用ELK软件版本: 软件下载地址: 将ELK所需要的软件上传到服务器 新建文件夹xinsz08 上传软件 ...
- Altium Designer 18 速成实战 第五部分 PCB流程化设计常用操作(二)常用PCB快捷键的介绍
Altium Designer 18 速成实战 第五部分 PCB流程化设计常用操作(二)常用PCB快捷键的介绍 常用系统快捷键----来自PCB联盟网,若侵联系即删. 目录 一.组合快捷键如何得来呢? ...
- k8s、ServiceAccount权限详解、RBAC 详解(基于角色的访问控制),常用操作指令
文章目录 Service Account应用示例 RBAC 详解(基于角色的访问控制) 创建一个角色(role)---权限 实验二 常用操作指令 Service Account应用示例 概念图权限关系 ...
- git 常用操作总结——基于Gitlab
博主目前在蚂蚁集团-体验技术部,AntV/S2 是博主所在团队的开源项目--多维交叉分析表格,欢迎使用,感谢到 S2 github 仓库点赞 star,有任何关于前端面试.就业.技术问题都可给在文章后 ...
最新文章
- Oracle 自己主动内存管理 SGA、PGA 具体解释
- VTK:IO之GLTFImporter
- loadView与viewDidLoad不同
- git base , 版本合并:git的分支与合并的两种方法 - 方法1:git merge
- MySQL DATE_ADD() 函数
- Hive from_unixtime函数入门
- 基于Matlab的车型识别(GUI界面)
- CodeForces 1009D Relatively Prime Graph 贪心+枚举
- ndoutils2.2.0(ndo2db)中文乱码问题解决
- 计算机操作与规范,计算机操作基础与汉字规范码拼音拼形训练
- 头歌:《C语言程序设计编程实践任务》教学团队:祁文青:选择结构程序设计
- pwn暑假训练(九) emem原来昨天是8今天是9
- 【matlab学习笔记】安装
- Jupyter notebook打开方式
- matlab对经济指标分析,财政收入预测与分析MATLAB
- 服务器中xmrig病毒处理
- 如何选淘宝爆款产品和打造单品爆款的方法
- 2020获客引流教程以及软件脚本
- 【STM32Cube】学习笔记(一):光敏传感器
- 用for的嵌套画出各种各样的图形