zoukankan      html  css  js  c++  java
  • elasticsearch语法之DSL语言(三)

    ES最主要是用来做搜索和分析的。所以DSL还是对于ES很重要的

    DSL:domain Specialed Lanaguage 在特定领域的语言

    1:全表查询(match_all)

    GET /demo_test_dev/_search
    {
      "query": {
        "match_all": {}
      }
    }

    2:条件查询 (match)

      根据条件在es中倒排索引分词查询,会把包含查询条件的数据也查询出来

    GET /demo_test_dev/_search
    {
      "query": {
        "match": {
          "name": "yjw"
        }
      }
    }

    3:排序 (sort)

      对查询出来的数据排序,跟mysql的排序一样;

      因为是对结果集排序,所以是在query同一级

    GET /demo_test_dev/_search
    {
      "query": {
        "match": {
          "phone": "18210408839"
        }
      },
      "sort": [
        {
          "age": {
            "order": "desc"
          }
        }
      ]
    }

    4:分页  (from,size)

      对查询结果集进行分页,在query同一级

      from:从第几个数据开始

      size:每页数据的个数

    GET /demo_test_dev/_search
    {
      "query": {
        "match": {
          "phone": "18210408839"
        }
      },
      "sort": [
        {
          "age": {
            "order": "desc"
          }
        }
      ],
      "from":0,
      "size": 2
    }

    5:结果集返回指定字段 (_source)

      在query同一级

      "_source":["字段1","字段2",...]

    GET /demo_test_dev/_search
    {
      "query": {
        "match": {
          "phone": "18210408839"
        }
      },
      "sort": [
        {
          "age": {
            "order": "desc"
          }
        }
      ],
      "_source": ["name","age"], 
      "from":0,
      "size": 2
    }

    6:多条件查询 (bool)

      bool 过滤可以用来合并多个过滤条件查询结果的布尔逻辑,它包含以下操作符:

    must:多个查询条件的完全匹配,相当于 and。
    must_not:多个查询条件的相反匹配,相当于 not。
    should:至少有一个查询条件匹配, 相当于 or。
    
    这些参数可以分别继承一个过滤条件或者一个过滤条件的数组
    GET /demo_test_dev/_search
    {
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "phone": "18210408839"
              }
            }
          ],
          "must_not": [
            {
              "match": {
                "sex": "男"
              }
            }
          ],
          "should": [
            {
              "match": {
                "age": "28"
              }
            },
            {
              "match": {
                "age": "29"
              }
            }
          ]
        }
      }
    }

    7:聚合计算个数

      如果不想显示出具体的数据内容,可以加上如下代码:

      "size": 0, 
    GET /demo_test_dev/_search
    {
      "size": 0, 
      "aggs": {
        "sex_group": {
          "terms": {
            "field": "sex.keyword",
            "size": 10
          }
        }
      }
    }

    8:聚合计算平均值  (avg) 

    GET /demo_test_dev/_search
    {
      "size": 0, 
      "aggs": {
        "sex_group": {
          "terms": {
            "field": "sex.keyword",
            "size": 10
          },
          "aggs": {
            "avg_age": {
              "avg": {
                "field": "age"
              }
            }
          }
        }
      }
    }

    9:聚合后排序 (order)

      注意order的位置

    GET /demo_test_dev/_search
    {
      "size": 0, 
      "aggs": {
        "sex_group": {
          "terms": {
            "field": "sex.keyword",
            "size": 10,
            "order": {
              "avg_age": "desc"
            }
          },
          "aggs": {
            "avg_age": {
              "avg": {
                "field": "age"
              }
            }
          }
        }
      }
    }

    10:聚合按照区间分组 (range)

    GET /demo_test_dev/_search
    {
      "size": 0, 
      "aggs": {
        "age_group_range":{
          "range": {
            "field": "age",
            "ranges": [
              {
                "from": 27,
                "to": 28
              },
              {
                "from": 28,
                "to":29
              }
            ]
          }
        }
      }
    }

    想要了解更多精彩内容,请跳转官方文档查看

     https://www.elastic.co/guide/cn/elasticsearch/guide/current/getting-started.html

  • 相关阅读:
    谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family
    谈谈一些有趣的CSS题目(十一)-- reset.css 知多少?
    【Web动画】SVG 实现复杂线条动画
    【Web动画】SVG 线条动画入门
    引人瞩目的 CSS 变量(CSS Variable)
    谈谈一些有趣的CSS题目(十)-- 结构性伪类选择器
    ROW_NUMBER() OVER函数的基本用法
    PL SQL笔记(三)
    pushState、replaceState、onpopstate 实现Ajax页面的前进后退刷新
    无聊的人用JS实现了一个简单的打地鼠游戏
  • 原文地址:https://www.cnblogs.com/jwdd/p/15609020.html
Copyright © 2011-2022 走看看