`

elasticsearch Java接口汇总

阅读更多

服务器端和客户端的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();

    }

}

 

分享到:
评论

相关推荐

    项目实战——Spark将Hive表的数据写入ElasticSearch(Java版本)

    在本项目实战中,我们将探讨如何使用Java编程语言,结合Spark和Hive,将Hive中的数据高效地导入到ElasticSearch(ES)中,并利用ES的别名机制实现数据更新的平滑过渡。以下是对这个流程的详细解析: 1. **Hive数据...

    java连接elasticsearch将搜索结果高亮显示并分页。

    java连接elasticsearch实现全文检索,并且高亮显示结果,实现分页。项目基于elasticsearch5.6.1可根据自己实际情况调整版本。最近项目需要所以学习了一下,项目很简单可以根据你的实际情况更改接口。我本地的搜索是...

    一个elasticsearch的示例代码

    1. **连接Elasticsearch**:在Java中,我们首先需要配置Elasticsearch的节点地址,创建`RestHighLevelClient`对象,这是与Elasticsearch通信的主要接口。它会处理HTTP请求,并提供了一套丰富的API来执行各种操作。 ...

    最新版windows elasticsearch-8.3.1-windows-x86_64.zip

    1. **Elasticsearch概述**:Elasticsearch是基于Lucene构建的,提供了分布式、RESTful接口的搜索和分析引擎。它支持多种数据类型,如文本、数字、地理位置等,适合处理大规模数据。 2. **版本8.3.1的更新**:每个新...

    elasticsearch-中文开发指南

    Elasticsearch 作为一款高性能的搜索与数据分析引擎,提供了丰富的功能和灵活的 API 接口,适用于多种应用场景。通过深入理解其基本概念和掌握关键 API 的使用方法,开发者可以更高效地构建出满足业务需求的应用程序...

    Java面试八股文2023最新版

    2. **ZooKeeper、Dubbo、Elasticsearch、Redis、Memcached、MySQL**:这些是分布式系统中的重要组件,涉及服务治理、数据存储、搜索和缓存。 3. **Nginx、Linux**:Nginx是高性能反向代理服务器,Linux是服务器操作...

    八股文知识点汇总——各互联网大厂java工程师面试题.pdf

    - Elasticsearch是分布式搜索引擎,考察索引、查询优化、集群管理等内容。 - Memcached是内存缓存系统,了解其基本原理、操作命令和使用场景。 - RabbitMQ和Kafka是消息中间件,关注队列、主题、消费模式等。 - ...

    最热门的Java 分布式面试题汇总

    25. Master选举:Elasticsearch通过Zen Discovery实现,当选主节点丢失时重新选举。 26. Segment合并:定期合并小Segment为大Segment,减少I/O操作。 27. Elasticsearch优化:索引分片优化、JVM调优、硬件选择等。...

    Java架构面试专题汇总(含答案)和学习笔记.zip

    还包括NoSQL数据库(如MongoDB)、消息中间件(如RabbitMQ)、缓存技术(如Redis)、搜索引擎(如Elasticsearch)等。这些技术在现代互联网应用中广泛应用,理解其原理和应用场景至关重要。 通过这个Java架构面试...

    ELK6.2.4搭建

    Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。 ELK下载:https://www.elastic.co/downloads/ ELK工作...

    2021最新Java面试题合集.zip

    - **Elasticsearch**:分布式搜索引擎,倒排索引,Sharding,Replication。 - **RESTful API**:使用HTTP操作Elasticsearch。 - **Lucene**:Elasticsearch的核心库,用于全文检索。 以上内容涵盖了Java开发者在...

    ES分布式搜索解决方案.docx

    Elasticsearch(ES)是一种基于Lucene的开源全文搜索引擎,专门设计用于处理大规模数据的分布式、实时搜索和分析引擎。它解决了传统数据库在大规模数据检索时的性能问题。 1. **数据存储**:Elasticsearch采用分片...

    微机原理与接口技术复习笔记汇总.docx

    - **段寄存器**:CS、SS、DS和ES分别用于保存代码段、堆栈段、数据段和扩展段的地址。 - **标志寄存器**:CF、PF、AF、ZF、SF、OF以及控制标志TF、IF和DF,它们记录运算结果的状态和控制中断与方向。 - **通用...

    微机原理与接口技术复习笔记汇总.pdf

    在8086中,存在四类段寄存器:CS、SS、DS和ES,分别用于保存代码段、堆栈段、数据段和扩展段的段地址。此外,还有通用寄存器如AX、BX、CX、DX、SP、BP、SI和DI,它们在不同的计算和存储任务中起到关键作用。 在处理...

    人大金仓数据库用户手册

    * KingbaseES V8 的服务器端编程接口支持多种编程语言,包括 Java、Python、C++ 等,提供了灵活的开发选择。 * KingbaseES V8 的客户端编程接口支持 ODBC、JDBC 等标准协议,确保与不同应用程序的兼容性。 二、...

    程序员求职-Vue面试题汇总.zip

    Vue面试题汇总通常会涵盖Vue的基础知识、高级概念、最佳实践以及与其他技术(如Babel、Webpack、Python、SQL和Java)的交互。下面将详细讨论Vue面试中可能会涉及的关键知识点。 1. **Vue基础知识**: - 双向数据...

    M哥linux2016版视频课堂文档汇总

    大数据处理部分涉及Hadoop、Spark和Storm等工具,以及ELK(Elasticsearch、Logstash、Kibana)日志分析套件。Docker容器技术的介绍,使得应用程序部署更加轻量级和便捷。Python编程的学习,尤其是其在运维中的应用,...

    Linux 2016文档汇总.docx

    - **大数据处理**:Hadoop、Spark、Storm、ELK堆栈(Elasticsearch、Logstash、Kibana)。 - **Docker**:容器化技术。 - **Python编程**:一种广泛使用的高级编程语言。 此外,还提到了“一万小时定律”,这...

Global site tag (gtag.js) - Google Analytics