elasticsearch的percolator操作

  es的普通查询是通过某些条件来查询满足的文档,percolator则不同,先是注册一些条件,然后查询一条文档是否满足其中的某些条件。

es的percolator特性在数据分类、数据路由、事件监控和预警方面都有很好的应用。

第一步是建立名为percolate的索引,包含一个字段message

curl -XPUT ‘localhost:9200/percolate‘ -d‘{
     "mappings":{
          "my_type":{
              "properties":{
                   "message":{
                        "type":"string"
                    }
              }
          }
      }
}‘

第二步,注册一个percolator查询

第三步,构建查询

第四步,查看是否有匹配的条件

第二步到第四步的代码如下,代码基于es 2.1版本:

QueryBuilder qb = QueryBuilders.termQuery("message", "bonsai");
    try {
        //Index the query = register it in the percolator
        //把查询条件添加到索引中,myDesignatedQueryName为定义的查询名
        client.prepareIndex("percolate", ".percolator", "myDesignatedQueryName")
            .setSource( XContentFactory.jsonBuilder()
                .startObject()
                    // Register the query,添加查询记录
                    .field("query", qb)
                .endObject())
            .setRefresh(true) // Needed when the query shall be available immediately
            .execute().actionGet();
        //上面的term查询定义名为:myDesignatedQueryName       

        XContentBuilder docBuilder = XContentFactory.jsonBuilder().startObject();
        //This is needed to designate the document
        docBuilder.field("doc").startObject();
        docBuilder.field("message", "A new bonsai tree in the office");
        docBuilder.endObject();
        docBuilder.endObject(); 

        //Percolate查询
        PercolateResponse response = client.preparePercolate()
                                .setIndices("percolate")
                                .setDocumentType("message")
                             .setSource(docBuilder).execute().actionGet();

       //获取查询query后处理逻辑
        for(PercolateResponse.Match match : response) {
            //创建percolate时指定的ID,根据查询ID在做相应的操作
            System.out.println("percolate ID: "+match.getId());
            System.out.println("percolate Index Name: " +match.getIndex());
        }
    } catch (ElasticsearchException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

输出结果为:

percolate ID: myDesignatedQueryName
percolate Index Name: percolate
时间: 2024-12-29 12:48:15

elasticsearch的percolator操作的相关文章

ElasticSearch之CURL操作(有空再去整理)

https://www.cnblogs.com/jing1617/p/8060421.html CURL的操作    curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求.简单的认为是可以在命令行下面访问url的一个工具.在centos的默认库里面是有curl工具的,如果没有请yum安装即可.     curl     -X 指定http的请求方法 有HEAD GET POST PUT DELETE     -d 指定要传输的数据   

elasticsearch建立索引操作的API

ElasticSearch-API-Index 索引创建API允许初始化一个索引.ElasticSearch对多重索引提供了支持,包括跨多个索引执行操作.每个索引在创建时可以让一个特定的设置项与其关联. 最简单的方式创建索引 curl -XPUT 'http://localhost:9200/twitter/' 在创建索引的时候指定分片和副本数量,参数格式采用YAML格式 curl -XPUT 'http://localhost:9200/twitter/' -d ' index:   numb

ElasticSearch+Kibana 索引操作( 附源码)

一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便. 因为在工作的项目中有使用到所以写下相关的内容,并附带源码 感兴趣的朋友可以自己玩一玩,整个项目都是在Linux上跑的,所以安装步

ElasticSearch文档操作介绍三

ElasticSearch文档的操作 文档存储位置的计算公式: shard = hash(routing) % number_of_primary_shards 上面公式中,routing 是一个可变值,默认是文档的 _id ,也可以设置成一个自定义的值. routing 通过 hash 函数生成一个数字,然后这个数字再除以 number_of_primary_shards (主分片的数量)后得到 余数 .这个分布在 0 到 number_of_primary_shards-1 之间的余数,就是

elasticsearch(5) curl 操作elasticsearch

创建索引之前可以对索引做初始化操作, 比如指定shards数量以及replicas的数量.     library为索引的名称 CURL -XPUT 'http://192.168.1.10:9200/library/' -d '{ "settings": { "index": { "number_of_shards": 5, "number_of_replicas": 1 } } }' CURL -XGET 'http://

springboot使用elasticsearch的客户端操作eslaticsearch

一  ES客户端 ES提供多种不同的客户端: 1.TransportClient ES提供的传统客户端,官方计划8.0版本删除此客户端. 2.RestClient RestClient是官方推荐使用的,它包括两种:Java Low Level REST Client和 Java High Level REST Client. ES在6.0之后提供 Java High Level REST Client, 两种客户端官方更推荐使用 Java High Level REST Client,不过当前它

elasticsearch JAVA客户端操作---搜索的过滤、分组高亮

elasticsearch        提供的API比较多,看名字差不多可以明白什么意思 源码地址:源码下载点击 public void search01() { QueryBuilder query = QueryBuilders.queryString("9"); // 设置搜索的内容和现实的大小 SearchResponse res = client.prepareSearch("test").setQuery(query) .setFrom(0).setS

elasticsearch java 索引操作

1.添加maven依赖 Xml代码   <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>0.90.0</version> </dependency> 建议使用maven管理项目,因为elasticsearch还有很多依赖包,手工维护很麻烦 2.创建连接elastic

ElasticSearch之CURL操作

CURL的操作    curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求.简单的认为是可以在命令行下面访问url的一个工具.在centos的默认库里面是有curl工具的,如果没有请yum安装即可.     curl     -X 指定http的请求方法 有HEAD GET POST PUT DELETE     -d 指定要传输的数据     -H 指定http请求头信息     浏览ES服务器         curl -XGET