elasticsearch练习
elasticsearch练习
最近在学习elasticsearch,做了一些练习,分享下练习成果,es基于6.7.2,用kibana处理DSL,有兴趣的伙伴可以自己试试
1.简单查询练习 source: test003/doc
1.1 查询name中包含"li"的人,
GET test003/_search
{
"query":
{
"regexp":{"user":".*li.*"}
}
}
1.2 查询msg中含有birthday的数据,
GET test003/_search
{
"query":
{
"match":{"message":"birthday"}
}
}
1.3 查询city上海的,
GET /test003/_search
{
"query":
{
"match":{"city":"上海"}
}
}
1.4 查询name wangwu或lisi的,
GET test003/_search
{
"query":
{
"terms":{
"user":["lisi","wangwu"]
}
}
}
1.5 查询年龄大于35小于60的,同上/只显示name age city
GET test003/_search
{
"_source": ["name","age","city"],
"query":
{
"range": {
"age": {
"gt": 35,
"lt": 60
}
}
}
}
1.6 查询年龄大于30且city不在北京的,
GET test003/_search
{
"query":
{
"bool":
{
"must": [
{"range": {
"age": {
"gte": 30
}
}}
],
"must_not": [
{
"term": {
"city": "北京"
}
}
]
}
}
}
1.7 查询name不含"li"且age大于20,
GET test003/_search
{
"query":
{
"bool":
{
"must": [
{"range": {
"age": {
"gte": 20
}
}}
],
"must_not": [
{"regexp": {
"user": ".*li.*"
}}
]
}
}
}
2.聚合复合查询 source: /employees/employee_info
2.1 查询salary最高的员工,只显示name和salary,返回top3
GET employees/_search
{
"_source": ["name","salary"],
"size": 3,
"sort": [
{
"salary": {
"order": "desc"
}
}
],
"aggs": {
"max_salary": {
"max": {
"field": "salary"
}
}
}
}
2.2 在gender 为male中,查询统计salary各项数据,top3
GET employees/_search
{
"sort": [
{
"salary": {
"order": "desc"
}
}
],
"size": 3,
"aggs": {
"male":
{
"filter": {"term": {
"gender": "male"}},
"aggs": {
"stats_salary": {
"stats": {
"field": "salary"
}
}
}
}
}
}
2.3 查询不同岗位的职员的最高salary
GET employees/_search
{
"aggs": {
"job":
{
"terms": {"field": "job.keyword"},
"aggs": {
"stats_salary": {
"stats": {
"field": "salary"
}
}
}
}
}
}
2.4 查询age大于25或salary大于12000的的java程序员
GET employees/employee_info/_search
{
"query" :
{
"bool":
{
"must": [
{ "match": {
"job": "Java Programmer"
}},
{
"range": {
"age": {
"gte": 25
}
}
},
{
"bool":
{
"should": [
{
"range": {
"salary": {
"gt": 20000
}
}
}
]
}
}
]
}
}
}
2.5 查询salary在15000下,15000-30000,30000以上的female员工
GET employees/_search
{
"size": 3,
"sort": [
{
"salary": {
"order": "desc"
}
}
],
"aggs": {
"female_employee": {
"filter": {"term": {
"gender": "female"}},
"aggs":
{
"salary_range":
{
"range": {
"field": "salary",
"ranges": [
{
"to": 15000
},
{
"from": 15000,
"to":30000
},
{
"from": 30000
}
]
}
}
}
}
}
}
数据源
// 操作数据3-聚合操作
PUT /employees/employee_info/_bulk
{ "index" : { "_id" : "1" } }
{ "name" : "Emma","age":32,"job":"Product Manager","gender":"female","salary":35000 }
{ "index" : { "_id" : "2" } }
{ "name" : "Underwood","age":41,"job":"Dev Manager","gender":"male","salary": 50000}
{ "index" : { "_id" : "3" } }
{ "name" : "Tran","age":25,"job":"Web Designer","gender":"male","salary":18000 }
{ "index" : { "_id" : "4" } }
{ "name" : "Rivera","age":26,"job":"Web Designer","gender":"female","salary": 22000}
{ "index" : { "_id" : "5" } }
{ "name" : "Rose","age":25,"job":"QA","gender":"female","salary":18000 }
{ "index" : { "_id" : "6" } }
{ "name" : "Lucy","age":31,"job":"QA","gender":"female","salary": 25000}
{ "index" : { "_id" : "7" } }
{ "name" : "Byrd","age":27,"job":"QA","gender":"male","salary":20000 }
{ "index" : { "_id" : "8" } }
{ "name" : "Foster","age":27,"job":"Java Programmer","gender":"male","salary": 20000}
{ "index" : { "_id" : "9" } }
{ "name" : "Gregory","age":32,"job":"Java Programmer","gender":"male","salary":22000 }
{ "index" : { "_id" : "10" } }
{ "name" : "Bryant","age":20,"job":"Java Programmer","gender":"male","salary": 9000}
// 操作数据4-聚合操作之分组
POST _bulk
{"index":{"_index":"test003","_type":"doc"}}
{"user":"zhangsan", "age":30,"message":"happy birthday","city":"北京","location":{"lat":30,"lon":40}}
{"index":{"_index":"test003","_type":"doc"}}
{"user":"lisi", "age":30,"message":"happy birthday","city":"上海","location":{"lat":38.970718,"lon":116.325747}}
{"index":{"_index":"test003","_type":"doc"}}
{"user":"wangwu", "age":35,"message":"Happy birthday","city":"深圳","location":{"lat":37.970718,"lon":116.325747}}
{"index":{"_index":"test003","_type":"doc"}}
{"user":"zhaoliu", "age":40,"message":"birthday happy","city":"深圳","location":{"lat":36.970718,"lon":116.325747}}
elasticsearch练习的更多相关文章
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- Elasticsearch 5.0 中term 查询和match 查询的认识
Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...
- 以bank account 数据为例,认识elasticsearch query 和 filter
Elasticsearch 查询语言(Query DSL)认识(一) 一.基本认识 查询子句的行为取决于 query context filter context 也就是执行的是查询(query)还是 ...
- Ubuntu 14.04中Elasticsearch集群配置
Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...
- ElasticSearch 5学习(10)——结构化查询(包括新特性)
之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...
- ElasticSearch 5学习(9)——映射和分析(string类型废弃)
在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...
- .net Elasticsearch 学习入门笔记
一. es安装相关1.elasticsearch安装 运行http://localhost:9200/2.head插件3.bigdesk插件安装(安装细节百度:windows elasticsear ...
- 自己写的数据交换工具——从Oracle到Elasticsearch
先说说需求的背景,由于业务数据都在Oracle数据库中,想要对它进行数据的分析会非常非常慢,用传统的数据仓库-->数据集市这种方式,集市层表会非常大,查询的时候如果再做一些group的操作,一个 ...
- 如何在Elasticsearch中安装中文分词器(IK+pinyin)
如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当用Kibana作图的时候,按照term来分组,结果一个汉字被分成了一组. ...
- jar hell & elasticsearch ik 版本问题
想给es 安装一个ik 的插件, 我的es 是 2.4.0, 下载了一个版本是 1.9.5, [2016-10-09 16:56:26,248][INFO ][node ] [node-2] init ...
随机推荐
- MVC中将枚举类型数据应用到下拉列表中的方法
例如: public enum ItemTypes { Movie = 1, Game = 2, Book = 3 } 在MVC2.0中如何将以上枚举类型使 ...
- 一文解开java中字符串编码的小秘密
目录 简介 Unicode的发展史 Unicode详解 UTF-8 UTF-16 UTF-32 Null-terminated string 和变种UTF-8 简介 在本文中你将了解到Unicode和 ...
- 快速排序之C实现和JS实现的区别
快速排序是面试中的几乎必问的问题,理解之后发现并不难,在此贴出两种版本,与小伙伴们相互交流 PS:今天码代码非常有感觉,所以连发三篇博客,下午打球,手感也是热的发烫,希望不忘初心,方得始终. 进入正题 ...
- spring framework源码之AnnotationConfigApplicationContext
AnnotationConfigApplicationContext 内部使用了AnnotatedBeanDefinitionReader:ClassPathBeanDefinitionScanner ...
- 在移动硬盘上安装Linux Mint19记录
前要: 有一12年买的手提电脑,打算在其上直接装linux部署分布式爬虫顺便学linux 唔,开机吧--然开机动画没有,只有间断有序的悲鸣,一查,主板逝世 卖给收买旧电脑估计不到20-不能忍,想了想不 ...
- Ubuntu修改时区和更新时间
先查看当前系统时间 root@ubuntu:/# date -R 结果时区是:-0500 我需要的是东八区,这儿显示不是,所以需要设置一个时区 1.运行tzselect root@ubuntu:/# ...
- 基于SpringBoot+SpringDataJpa后台管理
昨天朋友找我喝酒,说30岁了,比较焦虑,钱没赚到,整天被媳妇数落. 其实现在我们看到的不一定就事真实的情况,就算从高斯分布看,平平淡淡的人生才是大部分人的轨迹.当然抖音.知乎上的不能比,人均收入百万, ...
- DevOps Next-AI / ML虚拟会议
这个中秋国庆,一起进阶反超呀!10月1日星期四,加入DevOps Next,可以参加有关AI和ML的免费活动,内容涉及持续测试,代码质量和DevOps生产力.优秀的你一起来加入! 关于本次活动 Dev ...
- Ribbon源码分析(一)-- RestTemplate 以及自定义负载均衡算法
如果只是想看ribbon的自定义负载均衡配置,请查看: https://www.cnblogs.com/yangxiaohui227/p/13186004.html 注意: 1.RestTemplat ...
- RT Thread SPI设备 使用
后记: 之前,我把SPI的片选在Cubemx中配置成了SPI_NSS.现在我给它改为了GPIO_OUTPUT. 同时参考了别人的类似的一个操作无线模块(采用SPI设备驱动)的例子程序(清楚了RTT的 ...