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练习的更多相关文章

  1. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  2. Elasticsearch 5.0 中term 查询和match 查询的认识

    Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...

  3. 以bank account 数据为例,认识elasticsearch query 和 filter

    Elasticsearch 查询语言(Query DSL)认识(一) 一.基本认识 查询子句的行为取决于 query context filter context 也就是执行的是查询(query)还是 ...

  4. Ubuntu 14.04中Elasticsearch集群配置

    Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...

  5. ElasticSearch 5学习(10)——结构化查询(包括新特性)

    之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...

  6. ElasticSearch 5学习(9)——映射和分析(string类型废弃)

    在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...

  7. .net Elasticsearch 学习入门笔记

    一. es安装相关1.elasticsearch安装  运行http://localhost:9200/2.head插件3.bigdesk插件安装(安装细节百度:windows elasticsear ...

  8. 自己写的数据交换工具——从Oracle到Elasticsearch

    先说说需求的背景,由于业务数据都在Oracle数据库中,想要对它进行数据的分析会非常非常慢,用传统的数据仓库-->数据集市这种方式,集市层表会非常大,查询的时候如果再做一些group的操作,一个 ...

  9. 如何在Elasticsearch中安装中文分词器(IK+pinyin)

    如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当用Kibana作图的时候,按照term来分组,结果一个汉字被分成了一组. ...

  10. 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 ...

随机推荐

  1. Kubernetes 服务部署最佳实践(二) ——如何提高服务可用性

    引言 上一篇文章我们围绕如何合理利用资源的主题做了一些最佳实践的分享,这一次我们就如何提高服务可用性的主题来展开探讨. 怎样提高我们部署服务的可用性呢?K8S 设计本身就考虑到了各种故障的可能性,并提 ...

  2. sqlserver语句的执行顺序

    执行顺序: 1.from 2.where 3.group by 4.having 5.根据select 关键之后的要显示的字段,进行结果集显示 6.order by 对最终结果集进行排序 7.top/ ...

  3. CSS居中的多种方法

    1.水平居中:text-align 与 inline-block 的配合 <div id = "div_center_align"> <div id = &quo ...

  4. Solr专题(一)手把手教你搭建Solr服务

    一.Solr是什么,能解决什么问题? Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对 ...

  5. 【Flutter 实战】路由堆栈详解

    老孟导读:Flutter中路由是非常重要的部分,任何一个应用程序都离不开路由管理,此文讲解路由相关方法的使用和路由堆栈的变化. Flutter 路由管理中有两个非常重要的概念: Route:路由是应用 ...

  6. 跨平台框架与React Native基础

    跨平台框架 什么是跨平台框架? 这里的多个平台一般是指 iOS 和 Android . 为什么需要跨平台框架? 目前,移动开发技术主要分为原生开发和跨平台开发两种.其中,原生应用是指在某个特定的移动平 ...

  7. 云计算openstack核心组件——nova计算服务(7)

    一.nova介绍:       Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova ...

  8. 基于MAXIMO的发电行业EAM解决方案

    1. 行业背景 随着我国以“厂网分开,竞价上网”为特点的电力市场的起步和发展,发电厂.发电集团成为独立企业参与市场竞争,原有的“生产型”管理模式已经不再适应市场的需求.发电企业在重视安全质量.保证电力 ...

  9. 刷题[RCTF 2019]Nextphp

    前置知识 一些关于php7.4版本需知: 1.FFI扩展:ffi.cdef 其中还有这样一段话 如果ffi.cdef没有第二个参数,会在全局查找,第一个参数所声明的符号.意思就是其在不传入第二个参数时 ...

  10. Docker:四、Docker进阶 Windows Docker IIS 部署

    前面的三篇docker 文档大家看的肯定不过瘾,自己可能也已经上手一试了...不知道有没有发现问题... 哈哈... 我来说说我遇到的问题哦 一.windows docker 镜像越来越大 默认的do ...