• 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

  • 相关阅读:
    【WPF】ListBox GridViewColumn Header 文字换行、文字多行显示
    【Unity】讯飞语音识别SDK
    【Unity】UGUI无法修改UI元素的Pivot锚点位置
    【Unity】EasyTouch5触屏检测
    【Unity】序列化字典Dictionary的问题
    【WPF】自定义形状的按钮Button
    【WPF】图片按钮的单击与双击事件
    【Unity】ShareSDK、SMSSDK的基本使用与常见问题
    【Unity】不能新建项目
    【Java】移动JDK路径后,修改环境变量不生效 Error: could not open `C:Program FilesJavajre1.8.0_131libamd64jvm.cfg'
  • 原文地址:https://www.cnblogs.com/jwdd/p/15609020.html
Copyright © 2020-2023  润新知