当你对一个无限输入数据流进行操作并搜索特定事件的出现时,可以使用此模型。可以用于检测监控系统中的故障。

在新版本中的知识点位置https://www.elastic.co/guide/en/elasticsearch/reference/6.4/query-dsl-percolate-query.html

示例索引

所有关于预匹配器的例子,都使用一个叫做notifier的索引,创建命令如下:

curl -XPOST ‘localhost:9200/notifier’ -d '{
"mapping":{
"book":{
"properties":{
"available":{
"type":"boolean"
}
}
}
}
}'

这里只定义了一个字段,其他字段类型靠es猜测

预匹配器的准备

一个预匹配器看上去像一个普通的elasticsearch索引一样,然而预匹配器允许我们倒转逻辑:对查询建立索引,然后发送文档给elasticsearch,看看索引中那个索引被匹配到。假设任何与预定义条件匹配的图书变得可用时,通知用户:

{
"query":{
"bool":{
"must":{
"term":{
"title":"crime"
}
},
"should":{
"range":{
"year":{
"gt":1900,
"lt":2000
}
}
}
},
"musts_not":{
"term":{
"otitle":"nothing"
}
}
}
}

把该查询放入query1.json,用户的另一个查询定义在query2.json中,内容如下:



现在把两个查询都注册到预匹配器(只是注册,还没有索引任何文档)中

curl -XPOST 'localhost:9200/notifier/.percolator/1' -d @query1.json

curl -XPOST 'localhost:9200/notifier/.percolator/old_books' -d @query2.json

命令中使用了两个完全不同的标示符来描述查询。

应用程序向预匹配器提供文档,并检查Elasticsearch是否找到相应的查询。这正是预匹配器的功能:反转搜索逻辑。不再是索引文档并执行搜索,而是存储查询并发送文档。作为结果,Elasticsearch将告诉我们哪些查询与当前文档匹配

发送一个文档,命令如下



elasticsearch响应如下:



注意:查询使用的端点:_percolate,索引的名字对用到存储查询的索引。

深入

注册在预匹配器中的查询实际上也是文档,可以向elasticsearch发送查询选择匹配过程中使用 .percolator索引中的哪个查询。

假设图书馆有几组用户,有些用户有权借阅一些罕见的书籍,或者有几个分馆,用户可以申报他们想去哪个馆。首先更新映射:



使用下面的命令,注册这个查询



上面的例子中,用户对任何标题中含有crime词条的图书感兴趣,想从三个分馆中借阅这些书。

Elasticsearch--预匹配器的更多相关文章

  1. Rspec: everyday-rspec实操。FactoryBot预构件 (rspec-expectations gem 查看匹配器) 1-4章

    总文档连接: RSpec.info/documentation/ 包括core, expectiation,rails , mock, 点击最新版本,然后右上角搜索class, method. 第3章 ...

  2. [Google Guava]字符串处理:连接器、拆分器、字符匹配器

    一.连接器[Joiner] 二.拆分器[Splitter] 三.字符匹配器[CharMatcher] 四.字符集[Charsets] Charsets:针对所有Java平台都要保证支持的六种字符集提供 ...

  3. Junit 断言 assertThat Hamcrest匹配器

    junit断言总结本文参考了http://blog.csdn.net/wangpeng047/article/details/9628449一 junit断言1.JUnit框架用一组assert方法封 ...

  4. EassyMock实践 自定义参数匹配器

    虽然easymock中提供了大量的方法来进行参数匹配,但是对于一些特殊场合比如参数是复杂对象而又不能简单的通过equals()方法来比较,这些现有的参数匹配器就无能为力了.easymock为此提供了I ...

  5. 前端测试框架Jest系列教程 -- Matchers(匹配器)

    写在前面: 匹配器(Matchers)是Jest中非常重要的一个概念,它可以提供很多种方式来让你去验证你所测试的返回值,本文重点介绍几种常用的Matcher,其他的可以通过官网api文档查看. 常用的 ...

  6. Flask入门之自定义过滤器(匹配器)

    1.  动态路由的匹配器? 不知道这种叫啥名,啥用法,暂且叫做匹配器吧. Flask自带的匹配器可以说有四种吧(保守数字,就我学到的) 动态路由本身,可以传任何参数字符串或者数字,如:<user ...

  7. 【Jest】笔记二:Matchers匹配器

    一.前言 什么是匹配器? 我们可以把匹配器看成,testng断言,这么理解就可以了 二.常用的匹配器 test('two plus two is four', () => { expect(2 ...

  8. BF匹配器

    对于BF匹配器,首先我们得用cv2.BFMatcher()创建BF匹配器对象.它取两个可选参数,第一个是normType.它指定要使用的距离量度.默认是cv2.NORM_L2.对于SIFT,SURF很 ...

  9. uva11019矩阵匹配器D316

    #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #inclu ...

随机推荐

  1. Mysql中错误日志、binlog日志、查询日志、慢查询日志简单介绍

    前言 数据库的日志是帮助数据库管理员,追踪分析数据库以前发生的各种事件的有力根据.mysql中提供了错误日志.binlog日志(二进制日志).查处日志.慢查询日志.在此,我力求解决下面问题:各个日志的 ...

  2. promise && than

    Promise 构造函数接受一个函数作为参数,该函数的2个参数分别是 resolve 和 reject.他们是2个函数,有 JavaScript 引擎提供,不用自己部署.   var promise ...

  3. SpringMVC之application-context.xml,了解数据库相关配置

    上一篇SpringMVC之web.xml让我们了解到配置一个web项目的时候,怎样做基础的DispatcherServlet相关配置.作为SpringMVC上手的第一步.而application-co ...

  4. C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理

    C#编译器优化那点事   使用C#编写程序,给最终用户的程序,是需要使用release配置的,而release配置和debug配置,有一个关键区别,就是release的编译器优化默认是启用的.优化代码 ...

  5. 【EasyUI】——可编辑的DataGrid

    利用EasyUI做的可编辑的DataGrid大致分为两种类型.一种是启动行编辑的,一种是启动单元格编辑.且不说启动编辑的效果怎样.单启动编辑这一块它就封装的非常厉害.好些功能没有办法去更改.如今项目的 ...

  6. python开发【第1篇】【基础知识】

    1.python解释执行原理 python代码——字节码——机器码——计算机 每次运行都要进行转换成字节码,然后再有虚拟机把字节码转换成机器语言,最后才能在硬件上运行. 2.python编码 unic ...

  7. 鸟哥的Linux私房菜-----9、vi文本处理器

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVrZXdhbmd6aQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  8. 深度理解apache 重写模块rewrite_mod,重写不再犯错

    1.RewriteRule ^(com\/.*)$ index.php?do=$1 问:上面的规则匹配表达式 "^(.*)$" 匹配的内容是什么 答:匹配内容是URI站点目录:/d ...

  9. 容器LinkedList原理(学习)

    一.概述 数据结构和ArrayList有本质不同,LinkedList 是基于链表实现,它的插入和删除操作比 ArrayList 更加高效,基于链表的,所以随机访问的效率要比 ArrayList 差. ...

  10. sql server 生成随机数 rand函数

    https://docs.microsoft.com/en-us/sql/t-sql/functions/rand-transact-sql?view=sql-server-2017 在某一个区间内生 ...