elasticsearch练习

最近在学习elasticsearch,做了一些练习,分享下练习成果,es基于6.7.2,用kibana处理DSL,有兴趣的伙伴可以自己试试

1.简单查询练习 source: test003/doc

1.1 查询name中包含"li"的人,


  1. GET test003/_search
    {
    "query":
    {
      "regexp":{"user":".*li.*"}
    }
    }

1.2 查询msg中含有birthday的数据,


  1. GET test003/_search
    {
    "query":
    {
      "match":{"message":"birthday"}
    }
    }

1.3 查询city上海的,


  1. GET /test003/_search
    {
    "query":
    {
      "match":{"city":"上海"}
    }
    }

1.4 查询name wangwu或lisi的,


  1. GET test003/_search
    {
    "query":
    {
      "terms":{
        "user":["lisi","wangwu"]
      }
    }
    }

1.5 查询年龄大于35小于60的,同上/只显示name age city


  1. GET test003/_search
    {
    "_source": ["name","age","city"],
    "query":
    {
      "range": {
        "age": {
          "gt": 35,
          "lt": 60
        }
      }
    }
    }

1.6 查询年龄大于30且city不在北京的,


  1. GET test003/_search
    {
    "query":
    {
      "bool":
      {
        "must": [
          {"range": {
            "age": {
              "gte": 30
            }
          }}
        ],
        "must_not": [
          {
            "term": {
              "city": "北京"
              }
            }
        ]
      }
    }
    }

1.7 查询name不含"li"且age大于20,


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


  1. GET employees/_search
    {
    "_source": ["name","salary"],
    "size": 3,
    "sort": [
      {
        "salary": {
          "order": "desc"
        }
      }
    ],
    "aggs": {
      "max_salary": {
        "max": {
          "field": "salary"
        }
      }
    }
    }

2.2 在gender 为male中,查询统计salary各项数据,top3


  1. GET employees/_search
    {
    "sort": [
      {
        "salary": {
          "order": "desc"
        }
      }
    ],
    "size": 3,
    "aggs": {
      "male":
      {
        "filter": {"term": {
          "gender": "male"}},
        "aggs": {
          "stats_salary": {
            "stats": {
              "field": "salary"
            }
          }
        }
      }
    }
    }

2.3 查询不同岗位的职员的最高salary


  1. GET employees/_search
    {
    "aggs": {
      "job":
      {
        "terms": {"field": "job.keyword"},
        "aggs": {
          "stats_salary": {
            "stats": {
              "field": "salary"
            }
          }
        }
      }
    }
    }

2.4 查询age大于25或salary大于12000的的java程序员


  1. 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员工


  1. 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
                }
              ]
            }
          }
        }
      }
    }
    }

数据源


  1. // 操作数据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. leetcode刷题-48旋转图像

    题目 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 思路 没有想到.看过解答后知道可以转置加翻转即可,且能达到最优的时间复杂度O(N^2). 实现 class Solu ...

  2. Linux驱动之设备树的基础知识

    前期知识   1. 如何编写一个简单的Linux驱动(一)--驱动的基本框架   2. 如何编写一个简单的Linux驱动(二)--设备操作集file_operations   3. 如何编写一个简单的 ...

  3. 实用js方法DataUrl转为File、url转base64

    声明:仅为方便自己所需,也希望能方便他人,如有侵权,联系删除. 1,DataUrl转为File /** * DataUrl转为File * @param {String} dataUrl - data ...

  4. 使用阿里云OSS的服务端签名后直传功能

    网站一般都会有上传功能,而对象存储服务oss是一个很好的选择.可以快速的搭建起自己的上传文件功能. 该文章以使用阿里云的OSS功能为例,记录如何在客户端使用阿里云的对象存储服务. 服务端签名后直传 背 ...

  5. Docker介绍及常用操作演示(一)

    Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互 ...

  6. python中圆周率的计算

    蒙特卡罗方法计算圆周率 蒙特卡罗方法是一个撒点方法,取一个正圆的四分之一,和一个正方形的四分之一 形成一个单位方形,单位四分之一圆和四分之一正方形之比,就构成了圆周率 向这个区域撒点,如果点落在圆内部 ...

  7. 突发!美商务部宣布封禁微信,TikTok——面对科技封锁,如何应对

    刚刚美国商务部忽然发布了这则新闻,为了回应特朗普2020年8月6号的行政令,称这些应用程序存在安全威胁. 禁令中称,自2020年9月20日起,美国政府将: 1 禁止通过美国在线移动应用程序商店分发或维 ...

  8. 一文搞懂Cookie,Session,Token,JWT

    HTTP协议是无状态的,无状态意味着,服务器无法给不同的客户端响应不同的信息.这样一些交互业务就无法支撑了.Cookie应运而生. Cookie 通过F12开发者工具,先瞅瞅Cookie的颜值 从图中 ...

  9. Oracle学习(七)游标

    一.简介 定义 实质上是数据集,类似数组一样,把查询的数据集存储在内存当中. 使用时可以通过游标指向其中一条记录,也可以通过循环游标达到循环数据集的目的. 游标的种类 显式游标: 使用之前必须得先声明 ...

  10. cnpm install 报错

    报错如图所示,请观下文 1,npm cache clean --force 2,进入文件,rm -rf node_modules/ ---- 暴力直接