方法 / 步骤

一: 前置工作

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)相关推荐

  1. Spark SQL概述,DataFrames,创建DataFrames的案例,DataFrame常用操作(DSL风格语法),sql风格语法

    一. Spark SQL 1. Spark SQL概述 1.1. 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作 ...

  2. linux的常用操作——基于ftp的windows10和腾讯云centos操作系统之间的文件上传和下载

    \qquad在腾讯云服务器的centos操作系统上,安装vsftpd并进行配置,然后基于ftp实现windows10操作系统和腾讯云centos系统之间的文件上传和下载. 文章目录 1.基于腾讯云服务 ...

  3. Elasticsearch常用操作:集群管理篇

    [TOC] 0 说明 基于es 5.6,可以参考官方文档: cat API:https://www.elastic.co/guide/en/elasticsearch/reference/5.6/ca ...

  4. 聊一聊Elasticsearch和MySQL的常用操作

    前言 ElasticSearch,开源的搜索和数据分析引擎,也是名列前茅的 nosql. 很多时候会想拿它和关系型数据库做对比,严格上它们是没有太多可比性的. 不过把有的东西放在一起比较,会帮助我们快 ...

  5. MongoDB实战系列之二:MongoDB的常用操作

    #以服务方式启动mongodb,要求验证 /elain/apps/mongodb/bin/mongod --fork --port 27001 --auth --dbpath /elain/data/ ...

  6. 隔壁老王的女朋友都能学会的ELK实战之elasticsearch

    文章目录 准备工作 本文所用操作系统: 系统详细信息: 系统内核: 系统版本: 系统内存 本文所用ELK软件版本: 软件下载地址: 将ELK所需要的软件上传到服务器 新建文件夹xinsz08 上传软件 ...

  7. Altium Designer 18 速成实战 第五部分 PCB流程化设计常用操作(二)常用PCB快捷键的介绍

    Altium Designer 18 速成实战 第五部分 PCB流程化设计常用操作(二)常用PCB快捷键的介绍 常用系统快捷键----来自PCB联盟网,若侵联系即删. 目录 一.组合快捷键如何得来呢? ...

  8. k8s、ServiceAccount权限详解、RBAC 详解(基于角色的访问控制),常用操作指令

    文章目录 Service Account应用示例 RBAC 详解(基于角色的访问控制) 创建一个角色(role)---权限 实验二 常用操作指令 Service Account应用示例 概念图权限关系 ...

  9. git 常用操作总结——基于Gitlab

    博主目前在蚂蚁集团-体验技术部,AntV/S2 是博主所在团队的开源项目--多维交叉分析表格,欢迎使用,感谢到 S2 github 仓库点赞 star,有任何关于前端面试.就业.技术问题都可给在文章后 ...

最新文章

  1. Oracle 自己主动内存管理 SGA、PGA 具体解释
  2. VTK:IO之GLTFImporter
  3. loadView与viewDidLoad不同
  4. git base , 版本合并:git的分支与合并的两种方法 - 方法1:git merge
  5. MySQL DATE_ADD() 函数
  6. Hive from_unixtime函数入门
  7. 基于Matlab的车型识别(GUI界面)
  8. CodeForces 1009D Relatively Prime Graph 贪心+枚举
  9. ndoutils2.2.0(ndo2db)中文乱码问题解决
  10. 计算机操作与规范,计算机操作基础与汉字规范码拼音拼形训练
  11. 头歌:《C语言程序设计编程实践任务》教学团队:祁文青:选择结构程序设计
  12. pwn暑假训练(九) emem原来昨天是8今天是9
  13. 【matlab学习笔记】安装
  14. Jupyter notebook打开方式
  15. matlab对经济指标分析,财政收入预测与分析MATLAB
  16. 服务器中xmrig病毒处理
  17. 如何选淘宝爆款产品和打造单品爆款的方法
  18. 2020获客引流教程以及软件脚本
  19. 【STM32Cube】学习笔记(一):光敏传感器
  20. 用for的嵌套画出各种各样的图形

热门文章

  1. 《抽样技术》第4章 等概率整群抽样和多阶段抽样
  2. html5 重度游戏,款款经典 2016年H5重度游戏好作大盘点
  3. r5 6600h怎么样 相当于什么水平
  4. 重新认识 Java 的 System.in
  5. 20210514面试题自我分类及总结(一)
  6. 重学 Java 设计模式:实战组合模式(营销差异化人群发券,决策树引擎搭建场景)
  7. myEclipse8.5注册码
  8. 聊聊字符集与字符编码这些事儿
  9. VS2015实现bmp格式图片的读取
  10. 什么是PON(无源光纤网络)、PON的发展及演进