ElasticSearch 基本使用

ElasticSearch 基本使用

上文说到 ElasticSearch的快速入门 ,本文将介绍ElasticSearch的基本使用

两种查询方式

https://www.elastic.co/guide/en/elasticsearch/reference/6.0/_the_search_api.html

REST 请求 + 搜索参数

GET /bank/_search?q=*&sort=account_number:asc

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hhFEyXKf-1624119639094)(ElasticSeatch.assets/image-20210618204020662.png)]

REST请求 + 请求体

DSL (Domain Specific Language)

GET /bank/_search
{

  "query": { "match_all": {} },

  "sort": [
    { "age" : "desc"},
    { "account_number": "asc"}
  ]

}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4x2vC8IZ-1624119639098)(ElasticSeatch.assets/image-20210618204549154.png)]

部分信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z9cLCKZw-1624119639099)(ElasticSeatch.assets/image-20210618205215686.png)]

QueryDSL基本语法

JSON风格得DSL语法结构

{
  QUERY_NAME:{   //功能名
     FIELD_NAME:{  //字段名
       ARGUMENT:VALUE, //参数-值
       ARGUMENT:VALUE,...
      }   
   }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7txNRUZ6-1624119639102)(ElasticSeatch.assets/image-20210618210200864.png)]

match全文检索

match匹配

GET /bank/_search
{
  "query" : {
    "match": {
      "age": "22"
    }
  }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-52BMzPI4-1624119639104)(ElasticSeatch.assets/image-20210618211121480.png)]

全文检索

分词全文检索,按照评分降序

GET /bank/_search
{
  "query" : {
    "match": {
      "address": "mill lane"
    }
  }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LAnOSVMD-1624119639104)(ElasticSeatch.assets/image-20210618211634649.png)]

match_phrase短语匹配

使用match时会自动分词,如果不想分词,想查询一个完整的短语就可以使用短语匹配

GET /bank/_search
{
  "query": {
     "match_phrase": {
       "address": "mill lane"
     }
  }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RfXPNKu1-1624119639105)(ElasticSeatch.assets/image-20210618212116822.png)]

multi_match多字段匹配
GET /bank/_search
{
  "query": {
    "multi_match": {
      "query": "mill Movico",
      "fields": ["address","city"]
    }
  }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FvUPkYlt-1624119639106)(ElasticSeatch.assets/image-20210618212753072.png)]

注意: 查询内容会分词

bool复合查询

复合查询 可以理解为 , 多个查询条件都要一起满足

must,must_not,should

must: 必须满足

must_not : 必须不满足

should: 满不满足都可以,满足评分会更高

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IyQBDdnW-1624119639106)(ElasticSeatch.assets/image-20210618214656308.png)]

filer过滤查询

filer与must,must_not,should的不同: 是否满足都不会增加评分

GET /bank/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {
          "address": "mill"
        }}
      ],
      "filter": {
        "range": {
          "age": {
            "gte": 10,
            "lte": 40
          }
        }
      }
    }
  }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HgRbfT88-1624119639107)(ElasticSeatch.assets/image-20210618220907898.png)]

term查询

term查询与match查询类似

一般用term检索非文本的精确值

match检索文本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OV70ckmP-1624119639107)(ElasticSeatch.assets/image-20210618222213922.png)]

keyword匹配精确值

使用keyword后,文本精确值必须是匹配值才算匹配成功

GET /bank/_search
{
  "query": {
    "match": {
      "address.keyword": "198 Mill"
    }
  }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D1b22ZTZ-1624119639108)(ElasticSeatch.assets/image-20210618222704752.png)]

与match_phrase短语匹配区别

GET /bank/_search
{
  "query": {
    "match_phrase": {
      "address": "198 Mill"
    }
  }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zacWWnn1-1624119639109)(ElasticSeatch.assets/image-20210618222659631.png)]

聚合

语法格式

"aggregations" : {
    "<aggregation_name>" : {
        "<aggregation_type>" : {
            <aggregation_body>
        }
        [,"meta" : {  [<meta_data_body>] } ]?
        [,"aggregations" : { [<sub_aggregation>]+ } ]?
    }
    [,"<aggregation_name_2>" : { ... } ]*
}
  • trem:对值进行分布统计

    GET /bank/_search
    {
      "query": {
        "match_all": {}
      },
      "aggs": {
        "ageaggs": {
          "terms": {
            "field": "age",
            "size": 10
          }
        }
      }
    }
    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xqFVekma-1624119639110)(ElasticSeatch.assets/image-20210618231209021.png)]

  • agg:对值进行平均统计

    GET /bank/_search
    {
      "query": {
        "match_all": {}
      },
      "aggs": {
        "ageaggs": {
          "terms": {
            "field": "age",
            "size": 10
          }
        },
        "balanceAvg":{
          "avg": {
            "field": "balance"
          }
        }
      }
    }
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5loVFu7m-1624119639110)(ElasticSeatch.assets/image-20210618231637131.png)]

嵌套聚合

如果我想在上一个聚合出的结果上进行聚合,就要使用嵌套聚合

  • 对年龄聚合,统计各年龄人数,并请求这些年龄段人的平均薪资

    GET /bank/_search
    {
      "query": {
        "match_all": {}
      },
      "aggs": {
        "ageTrems": {
          "terms": {
            "field": "age",
            "size": 10
          },
          "aggs": {
            "balanceAvg": {
              "avg": {
                "field": "balance"
              }
            }
          }
        }
      }
    }
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1t5ikwaW-1624119639111)(ElasticSeatch.assets/image-20210618232212616.png)]

  • 对年龄聚合,统计各年龄人数,并请求这些年龄段中M的平均薪资和F的平均薪资,以及该年龄段总体平均薪资

    GET bank/_search
    {
      "query": {
        "match_all": {}
      },
      "aggs": {
        "ageTerms": {
          "terms": {
            "field": "age",
            "size": 10
          },
          "aggs": {
            "genderTrems": {
              "terms": {
                "field": "gender.keyword"
              },
              "aggs": {
                "balanceAvg": {
                  "avg": {
                    "field": "balance"
                  }
                }
              }
            },
            "balanceAgeAvg": {
              "avg": {
                "field": "balance"
              }
            }
          }
        }
      }
    }
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VhxAVDcn-1624119639112)(ElasticSeatch.assets/image-20210618233810748.png)]

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值