zoukankan      html  css  js  c++  java
  • Elasticsearch--预匹配器

    当你对一个无限输入数据流进行操作并搜索特定事件的出现时,可以使用此模型。可以用于检测监控系统中的故障。
    在新版本中的知识点位置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词条的图书感兴趣,想从三个分馆中借阅这些书。

  • 相关阅读:
    合并、媒体查询
    混入、命名空间(less)、继承
    函数(内置函数 和 自定义函数)
    运算、单位、转义、颜色
    选择器嵌套、伪类嵌套、属性嵌套(只在Sass中)
    注释、变量、插值、作用域
    二路归并排序java实现
    堆排序Java实现
    和为S的连续正数序列——牛客网(剑指offer)
    transient 与 volatile 笔记
  • 原文地址:https://www.cnblogs.com/51zone/p/9846173.html
Copyright © 2011-2022 走看看