Elasticsearch+java 实例

Elasticsearch+java 实例

楼主刚刚踏入职场,主攻ES,为此写了这个文章主要教初学者一些知识,希望对你有用。

如何在idea上构建一个ES项目

  • 首先构建一个Maven项目,编辑pox.xml如下:

<dependencies>
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>transport</artifactId>
        <version>5.4.3</version>
    </dependency>

    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>5.4.3</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.8.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.8.2</version>
    </dependency>
</dependencies>

此时,如果你的网络不好,下载的依赖包可能不完整,导致报错无法找到此依赖,这时候你需要删除一些maven的临时文件,给大家分享一个脚本,放置于你的maven库路径下~/.m2下


# create by NettQun
REPOSITORY_PATH=/home/andyshen/.m2/repository
echo 正在搜索...
find $REPOSITORY_PATH -name "*lastUpdated*" | xargs rm -fr
echo 搜索完

ES的主要有两种java client

ES中主要包含了两种clent:transport client、 java rest client

TransportClient客户端

  • TransportClient 是ElasticSearch(java)客户端封装对象,使用transport远程连接到Elasticsearch集群,该transport node并不会加入集群,而是简单的向ElasticSearch集群上的节点发送请求。
  • 基于netty协议,端口9300,适合海量查询,性能好较为麻烦

Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

依赖

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
    <version>6.4.1</version>
</dependency>

代码实例

// on startup
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)    // @1
        .addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300))     // @2
        .addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300));   
 // on shutdown
 client.close();

Java REST客户端

  • Java Low Level REST Client:elasticsearch client低级别客户端。它允许通过http请求与Elasticsearch集群进行通信。API本身不负责数据的编码解码,由用户去编码解码。它与所有的ElasticSearch版本兼容。
  • Java High Level REST Client:Elasticsearch client官方高级客户端。基于低级客户端,它定义的API,已经对请求与响应数据包进行编码解码。
  • JAVA REST Client使用http协议 端口9200 上手简单,懂ES DSL查询即可

依赖

<dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-client</artifactId>
        <version>6.4.0</version>
</dependency>
 <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-high-level-client</artifactId>
     <version>6.4.0</version>
         <type>pom</type>
</dependency>

实例代码

RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http"),
                new HttpHost("localhost", 9201, "http")));

// close
client.close();

一些ES实例

目前主要包含13个实例,具体请转到github:https://github.com/AndyShen105/Elasticsearch-java-samples

Samples of Document API

  • test-1: del an index
  • test-2: create an index
  • test-3: upload a file into index
  • test-4: upload a data
  • test-5: obtain a doc
  • test-6: del a doc
  • test-7: upload a file with bulkprocesser into index

Samples of search API

  • test-8: a sample search
  • test-9: search with scroll
  • test-10: search with template

Samples of aggregation API

  • test-11: simple aggregation
  • test-12: aggregation stats
  • test-13: geo bounds aggregations

    可以的话麻烦点个赞,谢谢哦
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值