服务器端和客户端的elasticsearch版本号须一致
setExplain(true)设置是否按查询匹配度排序
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
public class Searcher {
private TransportClient client;
public void init(){
client = new TransportClient().addTransportAddress(
new InetSocketTransportAddress("10.18.6.90", 9300));// localhost9300
}
//生成索引
public void generateIndex() {
Map<String, Object> json = new HashMap<String, Object>();
json.put("user", "hdidkv");
json.put("postDate", new Date());
json.put("message", "哥大富大贵");
IndexResponse response = this.client
.prepareIndex("twitter", "tweet", "1")
.setSource(json)
.execute()
.actionGet();
}
//查看索引
public void getIndex() {
GetResponse response = client.prepareGet("twitter", "test", "1")
.execute().actionGet();
Map<String, Object> rpMap = response.getSource();
if (rpMap == null) {
System.out.println("empty");
return;
}
Iterator<Entry<String, Object>> rpItor = rpMap.entrySet().iterator();
while (rpItor.hasNext()) {
Entry<String, Object> rpEnt = rpItor.next();
System.out.println(rpEnt.getKey() + " : " + rpEnt.getValue());
}
}
//创建一个termQuery查询
public void searchIndex() {
QueryBuilder qb = QueryBuilders.termQuery("user", "hdidkv");
SearchResponse scrollResp = client.prepareSearch("twitter")
//.setSearchType(SearchType.SCAN)
.setTypes("tweet")
.setScroll(new TimeValue(60000))
.setQuery(qb)
.setSize(100).execute().actionGet(); //100 hits per shard will be returned for each scroll
//Scroll until no hits are returned
while (true) {
scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).
setScroll(new TimeValue(600000)).execute().actionGet();
System.out.println(scrollResp.getHits().getTotalHits());
for (SearchHit hit : scrollResp.getHits()) {
Iterator<Entry<String, Object>> rpItor = hit.getSource().entrySet().iterator();
while (rpItor.hasNext()) {
Entry<String, Object> rpEnt = rpItor.next();
System.out.println(rpEnt.getKey() + " 1:1 " + rpEnt.getValue());
}
}
if (scrollResp.getHits().hits().length == 0) {
break;
}
}
}
//删除索引
public void deleteIndex() {
DeleteResponse response = client.prepareDelete("twitter", "tweet", "1")
.execute().actionGet();
}
//关闭连接
public void closeClient() {
this.client.close();
}
//练习使用elasticsearch的Java接口
public static void main(String[] args) {
//TransportClient client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("10.18.6.90", 9200));
Searcher searcher = new Searcher();
searcher.init();
searcher.generateIndex();
//searcher.getIndex();
searcher.searchIndex();
searcher.closeClient();
}
}
相关推荐
在本项目实战中,我们将探讨如何使用Java编程语言,结合Spark和Hive,将Hive中的数据高效地导入到ElasticSearch(ES)中,并利用ES的别名机制实现数据更新的平滑过渡。以下是对这个流程的详细解析: 1. **Hive数据...
java连接elasticsearch实现全文检索,并且高亮显示结果,实现分页。项目基于elasticsearch5.6.1可根据自己实际情况调整版本。最近项目需要所以学习了一下,项目很简单可以根据你的实际情况更改接口。我本地的搜索是...
1. **连接Elasticsearch**:在Java中,我们首先需要配置Elasticsearch的节点地址,创建`RestHighLevelClient`对象,这是与Elasticsearch通信的主要接口。它会处理HTTP请求,并提供了一套丰富的API来执行各种操作。 ...
1. **Elasticsearch概述**:Elasticsearch是基于Lucene构建的,提供了分布式、RESTful接口的搜索和分析引擎。它支持多种数据类型,如文本、数字、地理位置等,适合处理大规模数据。 2. **版本8.3.1的更新**:每个新...
Elasticsearch 作为一款高性能的搜索与数据分析引擎,提供了丰富的功能和灵活的 API 接口,适用于多种应用场景。通过深入理解其基本概念和掌握关键 API 的使用方法,开发者可以更高效地构建出满足业务需求的应用程序...
2. **ZooKeeper、Dubbo、Elasticsearch、Redis、Memcached、MySQL**:这些是分布式系统中的重要组件,涉及服务治理、数据存储、搜索和缓存。 3. **Nginx、Linux**:Nginx是高性能反向代理服务器,Linux是服务器操作...
- Elasticsearch是分布式搜索引擎,考察索引、查询优化、集群管理等内容。 - Memcached是内存缓存系统,了解其基本原理、操作命令和使用场景。 - RabbitMQ和Kafka是消息中间件,关注队列、主题、消费模式等。 - ...
25. Master选举:Elasticsearch通过Zen Discovery实现,当选主节点丢失时重新选举。 26. Segment合并:定期合并小Segment为大Segment,减少I/O操作。 27. Elasticsearch优化:索引分片优化、JVM调优、硬件选择等。...
还包括NoSQL数据库(如MongoDB)、消息中间件(如RabbitMQ)、缓存技术(如Redis)、搜索引擎(如Elasticsearch)等。这些技术在现代互联网应用中广泛应用,理解其原理和应用场景至关重要。 通过这个Java架构面试...
Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。 ELK下载:https://www.elastic.co/downloads/ ELK工作...
- **Elasticsearch**:分布式搜索引擎,倒排索引,Sharding,Replication。 - **RESTful API**:使用HTTP操作Elasticsearch。 - **Lucene**:Elasticsearch的核心库,用于全文检索。 以上内容涵盖了Java开发者在...
Elasticsearch(ES)是一种基于Lucene的开源全文搜索引擎,专门设计用于处理大规模数据的分布式、实时搜索和分析引擎。它解决了传统数据库在大规模数据检索时的性能问题。 1. **数据存储**:Elasticsearch采用分片...
- **段寄存器**:CS、SS、DS和ES分别用于保存代码段、堆栈段、数据段和扩展段的地址。 - **标志寄存器**:CF、PF、AF、ZF、SF、OF以及控制标志TF、IF和DF,它们记录运算结果的状态和控制中断与方向。 - **通用...
在8086中,存在四类段寄存器:CS、SS、DS和ES,分别用于保存代码段、堆栈段、数据段和扩展段的段地址。此外,还有通用寄存器如AX、BX、CX、DX、SP、BP、SI和DI,它们在不同的计算和存储任务中起到关键作用。 在处理...
* KingbaseES V8 的服务器端编程接口支持多种编程语言,包括 Java、Python、C++ 等,提供了灵活的开发选择。 * KingbaseES V8 的客户端编程接口支持 ODBC、JDBC 等标准协议,确保与不同应用程序的兼容性。 二、...
Vue面试题汇总通常会涵盖Vue的基础知识、高级概念、最佳实践以及与其他技术(如Babel、Webpack、Python、SQL和Java)的交互。下面将详细讨论Vue面试中可能会涉及的关键知识点。 1. **Vue基础知识**: - 双向数据...
大数据处理部分涉及Hadoop、Spark和Storm等工具,以及ELK(Elasticsearch、Logstash、Kibana)日志分析套件。Docker容器技术的介绍,使得应用程序部署更加轻量级和便捷。Python编程的学习,尤其是其在运维中的应用,...
- **大数据处理**:Hadoop、Spark、Storm、ELK堆栈(Elasticsearch、Logstash、Kibana)。 - **Docker**:容器化技术。 - **Python编程**:一种广泛使用的高级编程语言。 此外,还提到了“一万小时定律”,这...