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

elasticsearch的percolator操作的更多相关文章

  1. ElasticSearch+Kibana 索引操作

    ElasticSearch+Kibana 索引操作 一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引 ...

  2. elasticsearch的索引操作和文档操作总结

    参考文档:https://es.xiaoleilu.com/010_Intro/00_README.html 一.索引操作 1.查看当前节点的所有的index 查看当前节点的所有的index [roo ...

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

    https://www.cnblogs.com/jing1617/p/8060421.html ElasticSearch之CURL操作 CURL的操作    curl是利用URL语法在命令行方式下工 ...

  4. Es图形化软件使用之ElasticSearch-head、Kibana,Elasticsearch之-倒排索引操作、映射管理、文档增删改查

    今日内容概要 ElasticSearch之-ElasticSearch-head ElasticSearch之-安装Kibana Elasticsearch之-倒排索引 Elasticsearch之- ...

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

    一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elastics ...

  6. elasticsearch(3) 数据操作-更新

    一 更新整个文档 更新整个文档的方法和存放数据的方式是相同的,通过PUT 127.0.0.1/test/test/1  我们可以把test/test/1下的文档更新为新的文档 例: PUT 127.0 ...

  7. ElasticSearch文档操作介绍三

    ElasticSearch文档的操作 文档存储位置的计算公式: shard = hash(routing) % number_of_primary_shards 上面公式中,routing 是一个可变 ...

  8. 初识Elasticsearch,bulk 操作的遇到的那些事

    bulk api可以在单个请求中一次执行多个文档的 create . index . update 或 delete 操作 批量操作的行为(action)必须是以下几种: 行为 解释 create 当 ...

  9. Elasticsearch 相关 api 操作

    A. es 操作 1. 检查 es 集群健康状态 2. 获取集群中的节点列表 3. 创建索引 4. 获取索引 5. 索引文档 6. 查询文档 7. 删除索引 8. 更新文档 9. 删除文档 10. 批 ...

随机推荐

  1. 我的第五个网页制作:pre、html转义、abbr标签的使用

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  2. 将数据按照gzip当时解压的工具类

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; impo ...

  3. 用于浏览器桌面通知的Web API 接口 -notification

    notification 接口用于浏览器向用户提供通知内容:常见的如网页版的微信: 1.实现,需要Notifications API 提供的通知接口: 用法: let notification = n ...

  4. Caused by: java.sql.SQLException: Couldn't perform the operation getAutoCommit: You can't perform any operations on this connection. It has been automatically closed by Proxool for some reason (see lo

    系统启动,一段时间不操作,然后在来操作时,报错如下: Caused by: java.sql.SQLException: Couldn't perform the operation getAutoC ...

  5. Tomcat软件使用常见问题

    Tomcat软件使用常见问题 tomcat软件使用的常见问题 1)闪退问题 原因:tomcat软件是java语言开发的. tomcat软件启动时,会默认到系统的环境变量中查找一个名称叫JAVA_HOM ...

  6. jdbc、Mybatis插入数据主键回显的实现方法

    插入数据的时候,往往需要获取主键值.但是有时候主键是自增长的那么,就不太适用手动添加主键值了,此时需要一种可以回显主键参数的方法, 下面以jdbc.mybatis的实现举例 此时使用的是jdbc的话或 ...

  7. WebService短信网关配置

    第一步:WebService框架选择[以CXF为例] 1.下载地址:http://cxf.apache.org/download.html,请事先安装好JDK(本人使用的是apache-cxf-2.7 ...

  8. Laravel 验证中文本地化

    1.使用bootsrap好看的提示样式 但是会提示英文 2.将提示中文本地化 2.1.在/resouce/lang下创建文件夹:zh 2.2.已经有小伙伴做好了翻译 https://gist.gith ...

  9. 关于Vue的各个UI框架(elementUI、mint-ui、VUX)

    elementUI 官网:http://element.eleme.io/ 使用步骤: 1.安装完vue-cli后,再安装 element-ui 命令行:npm i element-ui -D 相当于 ...

  10. SpringMVC图片上传与显示

    @RestController @Scope("prototype") @RequestMapping("/xxxx/xxx/main") public cla ...