转载请标明出处:http://donlianli.iteye.com/blog/1902840
其实在上一篇博客中,只要大家能看懂,就应该能够根据其代码做到举一反三了,依次类推ES的批量操作Bulk,搜索功能Search等,但在这里还是简单讲一下。
批量索引和删除
BulkRequestBuilder bulkRequest = client.prepareBulk(); for(int i=500;i<1000;i++){ //业务对象 String json = ESUtils.toJson(new LogModel()); IndexRequestBuilder indexRequest = client.prepareIndex("twitter", "tweet") //指定不重复的ID .setSource(json).setId(String.valueOf(i)); //添加到builder中 bulkRequest.add(indexRequest); } BulkResponse bulkResponse = bulkRequest.execute().actionGet(); if (bulkResponse.hasFailures()) { // process failures by iterating through each bulk response item System.out.println(bulkResponse.buildFailureMessage()); }
上面只是批量索引的方法,将client.prepareIndex改为client.prepareDelete就是批量删除操作。ES对批量操作作了优化,所以大家使用时,尽量将操作集中起来调用批量接口,速度会更快一些。
搜索(Search)
这里说的搜索仅仅是简单相等条件搜索,并没有涉及真正意义上的搜索。比如,我们要搜索前1000条记录,代码如下:
SearchResponse response = client.prepareSearch("twitter") //这个在prepareSearch中指定还不行,必须使用setTypes .setTypes("tweet") //设置查询条件, .setFilter(FilterBuilders.matchAllFilter()) .setFrom(0).setSize(1000) .execute() .actionGet(); /** * SearchHits是SearchHit的复数形式,表示这个是一个列表 */ SearchHits shs = response.getHits(); for(SearchHit hit : shs){ System.out.println("id:"+hit.getId()+":"+hit.getSourceAsString()); } client.close();
搜索有两种方法,一种是使用Filter进行搜索,一种是使用Query进行搜索,例如,想只搜索某个字段为具体值的数据,也可以这样写。
Client client = ESUtils.getClient(); /** * 创建查询条件,QueryBuilders相当于Hibernate的Restrictions, * 而QueryBuilder则相当于一个Criteria,可以不停的增加本身对象 */ BoolQueryBuilder query = QueryBuilders.boolQuery(); //systemName为字段名称,oa未字段值 query.must(QueryBuilders.termQuery("systemName", "oa")); SearchResponse response = client.prepareSearch("twitter") //这个在prepareSearch中指定还不行,必须使用setTypes .setTypes("tweet") //设置查询条件, .setQuery(query) .setFrom(0).setSize(60) .execute() .actionGet(); /** * SearchHits是SearchHit的复数形式,表示这个是一个列表 */ SearchHits shs = response.getHits(); for(SearchHit hit : shs){ System.out.println(hit.getSourceAsString()); } client.close();
这些只是使用ES的传统用法,就是想用ES取代传统数据库的用法。但其实ES的主要目的并非如此,相信你使用搜索引擎也不是想做这些简单的查询和插入。排名,分词等更高级的用法,我也没有完全搞清楚,还望大家多多指教。
对这类话题感兴趣?欢迎发送邮件至donlianli@126.com
关于我:邯郸人,擅长Java,Javascript,Extjs,oracle sql。
更多我之前的文章,可以访问 我的空间
相关推荐
可以使用`_bulk` API批量导入数据,或者利用`elasticsearch-jdbc`插件实现与关系型数据库的交互。同时,Elasticsearch提供了丰富的API,如GET、POST、PUT、DELETE等,用于对索引、文档的操作。 对于搜索功能,...
Elasticsearch 入门篇 Elasticsearch 是一个分布式的、面向生产规模工作负载优化的搜索引擎。Kibana 可以将 Elasticsearch 中的数据转化为直观的图表、图形和仪表盘。本篇文章将详细介绍 LOCAL 安装 Elasticsearch ...
07_Elasticsearch 批量操作bulk 08_Elasticsearch 版本控制version 09_Elasticsearch 如何做映射mapping 10_Elasticsearch 基本查询 11_Elasticsearch filter查询 12_Elasticsearch 组合查询 13_Logstash 介绍以及...
- **节点(Node)**:Elasticsearch 集群中的单个实例,可以存储数据并参与集群的操作。 - **集群(Cluster)**:由多个节点组成,负责数据的分布和复制,确保高可用性和容错性。 2. **安装配置** - 下载 ...
**Elasticsearch RESTful搜索引擎与Java Jest库的入门教程** Elasticsearch是一个强大的分布式、开源的全文搜索引擎,它提供了一个可扩展的、近实时的搜索和分析引擎。RESTful API是Elasticsearch的核心特性,允许...
Elasticsearch-perl是Elasticsearch官方为Perl编程语言提供的一个低级客户端库。这个库旨在为开发者提供与Elasticsearch服务器进行交互的基本功能,以便在Perl应用中充分利用Elasticsearch的强大搜索和分析能力。 #...
- Elasticsearch Java API允许开发者在Java应用程序中直接操作Elasticsearch集群,创建索引、插入文档、执行查询等。 - 首先,你需要添加Elasticsearch的Java客户端库到项目依赖中,通常使用Maven或Gradle进行管理...
2. **文档导向**:Elasticsearch处理的是JSON格式的文档,这使得它能适应各种类型的数据,且易于理解和操作。 3. **索引与搜索**:索引是将数据存储到Elasticsearch的过程,而搜索则通过查询语句从索引中获取信息。...
【ES从入门到实战】八、全文检索-ElasticSearch-入门-删除数据&bulk批量操作导入样本测试数据的测试使用数据
### ES入门文档知识点详解 #### 一、ES简介与入门 **1.1 什么是ES?** Elasticsearch(简称ES)是一款基于Lucene的开源搜索引擎。它为开发者提供了高效、可靠的搜索和数据分析能力,支持多种数据类型的实时索引与...
**Elasticsearch 入门详解** Elasticsearch 是一个开源的全文搜索引擎,它基于 Lucene 构建,设计用于分布式、容错,并提供实时的数据分析和检索能力。在本资料中,你将找到一个名为 "elasticsearch.zip" 的压缩包...
**Elasticsearch 入门详解** Elasticsearch 是一个基于 Lucene 的开源全文搜索引擎,它提供了分布式、实时、可扩展的搜索和分析引擎。作为大数据时代的重要工具,Elasticsearch 被广泛应用于日志分析、监控、推荐...
使用Bulk API有效地将Home-Assistant事件发布到Elasticsearch 使用索引生命周期管理(“ ILM”)自动维护索引和索引模板 通过可选的用户名和密码支持 跟踪传感器中的Elasticsearch集群运行状况sensor.es_cluster_...
- **数据导入导出**:使用 `elasticsearch-jdbc` 插件实现从关系型数据库导入数据,或使用 `_bulk` API 批量操作数据。 - **安全与监控**:通过 X-Pack 插件(商业版)或开源的 Shield、Kibana 监控工具增强安全性与...
- Segment Merge:随着数据量的增加,Elasticsearch会进行segment merge操作,以减少segment数量,提高搜索效率。 - Routing 和 Replica:Elasticsearch通过Routing保证数据可以分布在不同Shard中,而Replica用于...
**Elasticsearch 入门详解** Elasticsearch(简称 ES)是一种基于 Lucene 的开源分布式搜索引擎,它提供了全文检索、分析和分布式存储的功能。ES 的设计目标是简单、可扩展和高可用性,广泛应用于日志分析、实时...
标签 "ES入门" 表明这是针对初学者准备的,可能包含基本的索引、搜索和分析数据的例子。 在 Elasticsearch 中,`accounts.json` 文件很可能包含了一组JSON格式的账户数据记录,每个记录可能代表一个用户的账户信息...