• 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
  • 相关阅读:
    蓝桥杯每日一题(python)
    【Mysql】学习笔记
    利用postman完成JSON串的发送功能(springboot)
    Huggy Lingo: 利用机器学习改进 Hugging Face Hub 上的语言元数据
    HTML5+CSSday4综合案例二——banner效果
    idea自定义 postfix completion提高编码效率
    (切换多语言)elementUI +vue-i18n 的国际化设置及使用
    JSON & XML
    win版redis详细安装教程
    【第5章】pandas入门
  • 原文地址:https://blog.csdn.net/weixin_42094764/article/details/127887171