• 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"]
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    正确写法应该是

    {
    	"size":10 //返回的条数
    	"query":{
    		"match_all":{}//不做匹配返回所有数据
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    然后是高级一点的bool

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

    GET /demo_person/_search
    {
      "query": {
        "bool": {
          "must": [
            {"match": {
              "last_name": "Smith"
            }}
          ],
          "filter": [
            {"range": {
              "age": {
                "gte": 30
              }
            }}
          ],
          "should":[
          	
          ],
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    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*"
            }
          }]
       }
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

    {
        "query":{
            "match_all":{
    
            }
        },
        "collapse":{
        	# 根据哪个字段去去重 uid
            "field":"uid"
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    获取去重后的数量

    {
    	"from": 0,
    	"size": 0,
    	"aggs": {
    	  "my":{
    	    "terms":{
    	      "field": "uid"
    	    }
    	  }
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    返回结果

    "aggregations": {
        "my": {
          "doc_count_error_upper_bound": 0,
          "sum_other_doc_count": 0,
          "buckets": [
            {
              "key": "北京",
              "doc_count": 105
            },
            {
              "key": "上海",
              "doc_count": 1
            }
          ]
        }
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    Hive环境搭建
    chrome浏览器也能做自动化测试
    如何构建phantomjs的docker镜像
    数据库——数据库备份与恢复
    MySQL第十二讲:ShardingJDBC详解
    优秀程序员是怎么思考的?
    健身房小程序开发|健身房小程序运营介绍
    【21-40】计算机网络基础知识(非常详细)从零基础入门到精通,看完这一篇就够了
    【微服务】SpringCloud中Ribbon集成Eureka实现负载均衡
    群论学习记录
  • 原文地址:https://blog.csdn.net/weixin_42094764/article/details/127887171