es查询初学

初步学习es查询
基础查询
查询方式get indexName/_search
下面是一个把基础查询都写入的语句,格式是错误的,只是方便展示。
源自:https://blog.csdn.net/guaotianxia/article/details/124249348

{
	"size":10 //返回的条数
	"query":{
		"match_all":{}//不做匹配返回所有数据
		//分词匹配,如果字段做了分词设置,会去查询分词,如果没做则全段匹配
		"match":{
			"fieldName":"value"
		}
		//精确匹配,输入的条件是什么,字段值就要全等于这个条件
		"term":{
			"fieldName":"value"
		}
		//精确多匹配,类似in
		"terms":{
				"fieldName":["value1""value2"]
		}
	}
}

正确写法应该是

{
	"size":10 //返回的条数
	"query":{
		"match_all":{}//不做匹配返回所有数据
	}
}

然后是高级一点的bool

就是可以执行and和or,between的查询
上代码

GET /demo_person/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {
          "last_name": "Smith"
        }}
      ],
      "filter": [
        {"range": {
          "age": {
            "gte": 30
          }
        }}
      ],
      "should":[
      	
      ],
    }
  }
}

must:与关系,相当于关系型数据库中的 and。

should:或关系,相当于关系型数据库中的 or。

must_not:非关系,相当于关系型数据库中的 not。

filter:过滤条件。

range:条件筛选范围。

gt:大于,相当于关系型数据库中的 >。

gte:大于等于,相当于关系型数据库中的 >=。

lt:小于,相当于关系型数据库中的 <。

lte:小于等于,相当于关系型数据库中的 <=

nested
https://blog.csdn.net/wlei0618/article/details/126508180

模糊查询

GET /demo_person/_search
{
 "query": {
   "bool": {
     "filter": [
      {
         "wildcard":{
         "last_name":"*mi*"
        }
      }]
   }
 }
}

数据去重和显示去重后条数
数据根据字段去重

{
    "query":{
        "match_all":{

        }
    },
    "collapse":{
    	# 根据哪个字段去去重 uid
        "field":"uid"
    }
}

获取去重后的数量

{
	"from": 0,
	"size": 0,
	"aggs": {
	  "my":{
	    "terms":{
	      "field": "uid"
	    }
	  }
	}
}

返回结果

"aggregations": {
    "my": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "北京",
          "doc_count": 105
        },
        {
          "key": "上海",
          "doc_count": 1
        }
      ]
    }
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值