Elasticsearch基本使用(基于7.17)

Elasticsearch(基于7.17)

1.SearchApi

ES支持两种基本方式检索:

  • 通过使用 REST request URI 发送搜索参数(uri+检索参数)

    GET bank/_search?q=*&sort=account_number:asc
    
  • 通过使用Rest resuest body 发送搜索参数(uri+请求体)

GET bank/_search
{
"query":{
"match_all":{}
},
"sort":[
{
"account_number" :{
  "order" : "desc"
}
}
]
}

2.检索

2.1分词匹配

即查询关键词

GET bank/_search
{
"query":{
  "match": {
    "account_number": "20"
  }
}
}

2.2短语匹配

即匹配一整句

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

2.3多字段匹配

GET bank/_search
{
"query":{
  "multi_match": {
    "query": "mill",
    "fields": ["state","address"]
  }
}

2.4bool复合查询

如must,must_not,should,should可以提高评分

GET bank/_search
{
"query":{
  "bool": {
    "must": [
      {"match": {
        "gender": "M"
      }},
      {"match": {
        "address": "mill"
      }}
    ]
  }
}
}

2.5 结果过滤filter

filter不计算评分

GET bank/_search
{
"query":{
  "bool": {
    "must": [
      {"match": {
        "gender": "M"
      }},
      {"match": {
        "address": "mill"
      }}
    ],
    "filter": [
      {
        "range": {
          "age": {
            "gte": 18,
            "lte": 30
          }
        }
      }
    ]
  }
}
}

2.6term查询

term和match的区别是term不分词,适合精确查找

  • 非文本字段都使用term
  • 文本字段都使用match

2.7match_phrase和match keyword的区别

match_phrase为短语匹配,只要包含字段都能匹配,而match keyword则要求字段完全一致才能匹配

2.8 执行聚合

聚合提供了从数据中分组和提取数据的能力。最简单的聚合方法大致等于SQL GROUPBY和SQL聚合函数。在 Elasticsearch中,您有执行搜索返回hits(命中结果),并且同时返回聚合结果,把一个响应中的所有 hits (命中结果)分隔开的能力。这是非常强大且有效的,您可以执行查询和多个聚合,并且在一次使用中得到各自的(任何一个的)返回结果,使用一次简洁和简化的API来避免网络往返。

简单聚合

aggs:执行聚合,语法如下

GET bank/_search
{
  "query": {
    "match": {
      "address": "mill"
    }
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age",
        "size": 10
      }
    },
    "ageAvg":{
      "avg": {
        "field": "age"
      }
    },
    "balanceAvg":{
      "avg": {
        "field": "balance"
      }
    }
  }
}

size:0 不显示搜索数据

复杂聚合(子聚合)

GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "size": 0, 
  "aggs": {
    "ageAgg": {
      "terms": { 
        "field": "age",
        "size": 100
      },
      "aggs": {
        "ageAvg": {
          "avg": {
            "field": "balance"
          }
        },
        "genderAgg": {
          "terms": {
            "field": "gender.keyword"
          },
          "aggs": {
            "numavg": {
              "avg": {
                "field": "balance"
              }
            }
          }
        }
      }
    }
  }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Acerola-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值