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词条的图书感兴趣,想从三个分馆中借阅这些书。

  • 相关阅读:
    妙趣横生的HTML5 Page Visibility API
    Django ElasticSearch Ionic 打造 GIS 移动应用 —— 架构设计
    HT for Web的HTML5树组件延迟加载技术实现
    mobileSite开发Tips
    [译] 沙箱中的间谍
    使用Javascript获取剪贴板图片的DataURL
    竖屏旋转摄像头预览数据90度
    centos下安装 gcc,g++,gdb
    centos7连接网络不可达的解决方法
    OpenGL里的坐标系统以及其变换
  • 原文地址:https://www.cnblogs.com/51zone/p/9846173.html
Copyright © 2011-2022 走看看