• 推荐 1 推荐
  • 收藏 2 收藏,289 浏览

本文主要记录es的查询过滤的使用。

使用过滤器

过滤器不影响评分,而评分计算让搜索变得复杂,而且需要CPU资源,因而尽量使用过滤器,而且过滤器容易被缓存,进一步提升查询的整体性能。

post_filter(先查询再过滤)

{
"query": {
"match":{"title":"Catch-22"}
},
"post_filter":{
"term":{"year":1961}
}
}

filtered(先过滤再查询,速度快)

{
"query": {
"filtered": {
"query": {
"match": {
"title": "Catch-22"
}
},
"filter": {
"term": {
"year": 1961
}
}
}
}
}

这种方式在2.2版本被废弃调用,改用bool的方式

{
"query": {
"bool": {
"must": {
"match": {
"title": "Catch-22"
}
},
"filter": {
"term": {
"year": 1961
}
}
}
}
}

过滤器种类

范围过滤器

{
"post_filter":{
"range":{
"year":{
"gte":1930,
"lte":1990
}
} }
}

exists过滤器

过滤掉给定字段没有值的文档

{
"post_filter":{
"exists":{
"field":"year"
}
}
}

missing过滤器

过滤掉给定字段有值或缺失的文档

{
"post_filter":{
"missing":{
"field":"year",
"null_value":0,
"existence":true
}
}
}

脚本过滤器

过滤掉发表在一个世纪以前的书

{
"post_filter":{
"script":{
"script":"now - doc['year'].value > 100",
"params":{"now":2012}
}
}
}

类型过滤器

当查询运行在多个索引上时,有用

{
"post_filter":{
"type":{
"value":"book"
}
}
}

限定过滤器

限定每个分片返回的文档数

{
"post_filter":{
"limit":{
"value":1
}
}
}

标识符过滤器

比如要指定标识符为1,2,3的文档

{
"post_filter":{
"ids":{
"type":["book"],
"values":[1,2,3]
}
}
}

组合过滤器

{
"query": {
"bool": {
"must": {
"range": {
"year": {
"gte": 1930,
"lte": 1990
}
}
},
"should": {
"term": {
"available": true
}
},
"boost": 1
}
}
}

elasticsearch 过滤器的种类的更多相关文章

  1. Elasticsearch过滤器——filter

    Elasticsearch中的所有的查询都会触发相关度得分的计算.对于那些我们不需要相关度得分的场景下,Elasticsearch以过滤器的形式提供了另一种查询功能.过滤器在概念上类似于查询,但是它们 ...

  2. Elasticsearch 过滤器

    序 本文主要记录es的查询过滤的使用. 使用过滤器 过滤器不影响评分,而评分计算让搜索变得复杂,而且需要CPU资源,因而尽量使用过滤器,而且过滤器容易被缓存,进一步提升查询的整体性能. post_fi ...

  3. WebApi:过滤器的种类

    WebApi:筛选器的种类 授权筛选器:这些筛选器用于实现IAuthorizationFilter和做出关于是否执行操作方法(如执行身份验证或验证请求的属性)的安全决策.AuthorizeAttrib ...

  4. elasticsearch filters特性

    使用filters优化查询 ElasticSearch支持多种不同类型的查询方式,这一点大家应该都已熟知.但是在选择哪个文档应该匹配成功,哪个文档应该呈现给用户这一需求上,查询并不是唯一的选择.Ela ...

  5. django 模版-标签-视图-csrf-token-模版继承-HTML过滤器

    """ ******模版****** --定义模版-- **变量** 视图传递给模版的数据 注意1:要遵守标识符规则 语法:{{var(即变量)}} 如果使用的变量不存在 ...

  6. 理解ASP.NET Core - 过滤器(Filters)

    注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 Filter概览 如果你是从ASP.NET一路走过来的,那么你一定对过滤器(Filter)不陌 ...

  7. elasticsearch5之Elastalert 安装使用 配置邮件报警和微信报警

    简介 Elastalert是用python2写的一个报警框架(目前支持python2.6和2.7,不支持3.x),github地址为 https://github.com/Yelp/elastaler ...

  8. Elastalert安装及使用

    如果在windows 64平台报错:执行 pip install python-magic-bin==0.4.14修复https://stackoverflow.com/questions/18374 ...

  9. elastalert

    http://blog.51cto.com/kexiaoke/1977481 什么是? ElastAlert是一个简单的框架,用于从弹性搜索中的数据中提取异常,尖峰或其他感兴趣的模式.在Yelp,我们 ...

随机推荐

  1. vue组件参数校验

    代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...

  2. PHP缓存技术的应用1

    // 自定义缓存类 class Cache_Filesystem { // 缓存写保存 function set ($key, $data, $ttl) { //打开文件为读/写模式 $h = fop ...

  3. js 常见功能总会

    一.随着页面滚动,元素到达可视区域,显示特殊样式 <!DOCTYPE html> <html lang="en"> <head> <met ...

  4. iOS开发之SceneKit框架--实战地月系统围绕太阳旋转

    1.创建地月太阳系统scn文件 注意:moon在earth结构下,earth和moon在sun结构下. 2.获取scn中模型的对应节点和自转(太阳为例) 获取节点: name是对应的Identity字 ...

  5. 第十一篇:一点一滴学ibatis(一)

    一.常见ORM框架1.原生的JDBC.自己写的JDBC,基本上就只够程序跑起来,缺陷和漏洞一堆堆.回顾下jdbc的几个操作,加载驱动,建立连接,预处理语句,执行,结果集遍历.这个过程中,因为连接Con ...

  6. ssm项目中使用拦截器加上不生效解决方案

    在很多时候,需要拦截器来帮助我们完成一些特定的工作,比如获取请求的参数,本身在request这种获取数据就是一次磁盘的io, 如果在filter中获取了参数,那么在controller中就不能获取相关 ...

  7. 13-2-return

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 分析Hive表和分区的统计信息(Statistics)

    类似于Oracle的分析表,Hive中也提供了分析表和分区的功能,通过自动和手动分析Hive表,将Hive表的一些统计信息存储到元数据中. 表和分区的统计信息主要包括:行数.文件数.原始数据大小.所占 ...

  9. curl http_code 状态码

    1.只得到一个url的http_code的状态码 curl -I -m 10 -o /dev/null -s -w %{http_code} http://127.0.0.1/a.html 查询hea ...

  10. 大O法时间复杂度计算

    困惑的点——log,如何计算得出? ① 上限:用来表示该算法可能有的最高增长率. ② 大O表示法:如果某种算法的增长率上限(最差情况下)是f(n),那么说这种算法“在O(f(n))中”.n为输入规模. ...