首页 > 其他分享 >ES的过滤查询

ES的过滤查询

时间:2022-10-16 11:57:39浏览次数:51  
标签:term 查询 filter 过滤 bool query ES

ES的查询类型和特性

  • 查询(query):默认会计算每个返回文档的得分,然后根据得分排序
  • 过滤(filter):筛查出符合条件的文档,并且不计算得分,还可以缓存文档

image.png

注意:filter过滤查询必须要配合bool查询使用,执行时,先执行filter 过滤,然后在执行query,且ES会自动缓存经常使用的过滤器,以加快性能

filter过滤查询格式

GET /my_index/_search
{
	"query":{
  	"bool":{
    	"must":[
      	{"match_all":{}} // query 查询条件
      ],
    	"filter":[……]   // 过滤条件
    }
  }
}

term和terms查询

## term 单个关键词过滤查询
GET /my_index/_search
{
	"query":{
  	"bool":{
    	"must":[
      	{"match_all":{}} 
      ],
    	"filter":[
      	{
        	"term":{
          	"user":"LI LEI"
          }
        }
      ]
    }
  }
}

## terms 多个关键词过滤查询
GET /my_index/_search
{
	"query":{
  	"bool":{
    	"must":[
      	{"match_all":{}} 
      ],
    	"filter":[
      	{
        	"term":{
          	"user":["LI LEI","Tom"]
          }
        }
      ]
    }
  }
}

range 范围查询

GET /my_index/_search
{
	"query":{
  	"bool":{
    	"must":[
      	{"term":{
        		"user":{
          		"value":"zhangsan"
        		}
        	}
				} 
      ],
    	"filter":[
      	{
        	"range":{
          	"age":{
            	"gte":7,
            	"lte":20
						}
          }
        }
      ]
    }
  }
}

exists 过滤指定字段不为空的文档

GET /my_index/_search
{
	"query":{
  	"bool":{
    	"must":[
      	    {"term":{
            	"user":{
              	"value":"zhangsan"
            	}
            }
	  } 
      ],
    	"filter":[
      	{
        	"exists":{
          	"field":"telphoneNum"
          }
        }
      ]
    }
  }
}

ids 过滤查询

GET /my_index/_search
{
	"query":{
  	"bool":{
    	"must":[
      	{"term":{
          "user":{
        	"value":"zhangsan"
        	}
           }
	} 
      ],
    	"filter":[
      	{
        	"ids":{
          	"values":["1","2","3"]
          }
        }
      ]
    }
  }
}

标签:term,查询,filter,过滤,bool,query,ES
From: https://www.cnblogs.com/tenic/p/16795878.html

相关文章

  • Mysql单表访问方法,索引合并,多表连接原理,基于规则的优化,子查询优化
    参考书籍《mysql是怎样运行的》非常推荐这本书,通俗易懂,但是没有讲mysql主从等内容书中还讲解了本文没有提到的子查询优化内容,本文只总结了常见的子查询是如何优化的系......
  • ES聚合查询
    Elasticsearch的聚合查询分为四大类,分别是BucketAggregation、MetricAggregation、PipelineAggregation、MatrixAggregration。具体的四大类都是什么意思呢?都是怎么运......
  • ES中的DSL语句操作
    ES中的查询分为URISearch、RequestBodySearch。URISearch-在URL中使用查询参数。RequestBodySearch-使用JSON格式的入参作为查询条件。DSL语句就是基于Reques......
  • ES中的一些基本概念以及和关系数据库对比
    以下总结点为自己思路总结,有不正确地方,请斧正。ES中的基本概念一……索引索引:存放在ES中同一个类型文档的集合叫做ES中的索引,类似于关系数据库中的TableES中的基......
  • kubernetes学习笔记4-pod
    Pod资源定义​自主式pod资源,很少用到,手动创建的资源,用kubectldelete后不会自动创建,而使用pod控制器管理的才会按照用户期望的重新创建;​资源清单:一级字段(apiVersion|kind|m......
  • 绝杀processOn,这款UML画图神器,阿里字节都用疯了,你还不知道?
    大家好,我是陶朱公Boy,又和大家见面了。前言在文章开始前,想先问大家一个问题,大家平时在项目需求评审完后,是直接开始编码了呢?还是会先写详细设计文档,后再开始进行编码开发......
  • 实现查询连续3天登陆的用户
    sql写出连续三天都登录的用户1、创建表createtabletest_user_login_3days(user_idint,login_datestring); 2、数据准备insertintotest_user_login_3daysvalue......
  • Pytest进阶使用
    fixture特点:命令灵活:对于setup,teardown可以省略数据共享:在conftest.py配置里写方法可以实现数据共享,不需要import导入,可以跨文件共享scope的层次及神奇的yield组......
  • 【解决】Intellij IDEA打开报错Caused by: java.net.BindException: Address already
    jetbrainsPyCharmWebStormcom.intellij.ide.plugins.StartupAbortedException:Cannotstartapp原因是IDEA需要在端口6942~6991间找到一个可用端口并绑定但目前这个......
  • Codeforces Global Round 23 题解
    ContestLink我是智障。A.MaxminaProblemLink显然当数组中全是\(0\)的时候,最后不可能变成\(1\),因为我们只有相邻取\(\min\)和区间取\(\max\)两种操作,并没有任......