`

elasticsearch环境搭建和api编程

 
阅读更多
1.下载 Elasticsearch ,下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.zip
解压文件,进入bin目录 单击“elasticsearch.bat”启动。

2.启动后,在浏览器输入如下命令
1:查看是否部署成功
  http://localhost:9200/

  如下说明成功:
  {
  "name" : "l5YPTqU",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "WMcmRohDSqSYPOtvF8Nb-A",
  "version" : {
    "number" : "5.1.1",
    "build_hash" : "5395e21",
    "build_date" : "2016-12-06T12:36:15.409Z",
    "build_snapshot" : false,
    "lucene_version" : "6.3.0"
  },
  "tagline" : "You Know, for Search"
}

2:查看健康情况
http://localhost:9200/_cat/health?v
如下:
epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1514450156 16:35:56  elasticsearch yellow          1         1    255 255    0    0      255             0                  -                 50.0%



下面是一些通过curl操作es的例子,_cat用于查看,_update用于更新,_bulk用于批量操作,_search用于查询。
具体的就不一一解释了。可参见官网:https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html

##To check the cluster health
curl 'localhost:9200/_cat/health?v'

##get a list of nodes in our cluster
curl 'localhost:9200/_cat/nodes?v'

##take a peek at our indices
curl 'localhost:9200/_cat/indices?v'

##create an index named "customer"
curl -XPUT 'localhost:9200/customer?pretty'

##index a simple customer document into the customer index,
"external" type, with an ID of 1
curl -XPUT 'localhost:9200/customer/external/1?pretty'-d
' { "name": "John Doe" }'



常用的插件head,bigdesk,essql 请先下载插件

安装命令如下:
bin/plugin --url file:///path/to/plugin --install plugin-name


3.搭建开发环境
<properties>
<log4j.version>2.7</log4j.version>
</properties>

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



<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<exclusions>
<exclusion>
<artifactId>elasticsearch</artifactId>
<groupId>org.elasticsearch</groupId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.1.1</version>
<exclusions>
<exclusion>
<artifactId>elasticsearch</artifactId>
<groupId>org.elasticsearch</groupId>
</exclusion>
</exclusions>
</dependency>


<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>




Java代码:

package com.example.demo;

import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.get.MultiGetItemResponse;
import org.elasticsearch.action.get.MultiGetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.transport.LocalTransportAddress;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.index.Index;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.reindex.BulkIndexByScrollResponse;
import org.elasticsearch.index.reindex.DeleteByQueryAction;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.IOException;
import java.net.InetAddress;
import java.time.format.DateTimeFormatter;
import java.util.Date;

@RunWith(SpringRunner.class)
//@SpringBootTest
public class DemoApplicationTests {

/**
* 获取客户端
* @return
* @throws Exception
*/
public TransportClient getClient() throws  Exception{
//设置集群名称
Settings settings = Settings.builder().put("cluster.name", "elasticsearch")
.put("client.transport.sniff", true).build();// 集群名
//创建client
TransportClient client  = new PreBuiltTransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));

return  client;
}

/**
* 创建索引
* @throws Exception
*/
@Test
public void addIndex() throws  Exception{
    TransportClient client = getClient();
    for(int i=22;i<24;i++) {
    String user ="user";//索引名称
    String message = "message";//类型
    String id =i+"";// id
IndexResponse response = client.prepareIndex(user, message, id)
.setSource(XContentFactory.jsonBuilder()
.startObject()
.field("user", "kimchy"+i)
.field("postDate", new Date())
.field("message", "trying out Elasticsearch"+i)
.endObject()
)
.get();
System.out.println(response);
}


System.out.println("===");
client.close();
//输出结果
// IndexResponse[index=user22,type=message22,id=22,version=1,result=created,shards={"_shards":{"total":2,"successful":1,"failed":0}}]
// IndexResponse[index=user23,type=message23,id=23,version=1,result=created,shards={"_shards":{"total":2,"successful":1,"failed":0}}]
}


/**
* 获取索引
* @throws Exception
*/
@Test
public void getIndex() throws  Exception{
TransportClient client = getClient();
GetResponse response = client.prepareGet("user22","message22","22").get();
System.out.println(response.toString());
System.out.println("end:"+response.getSourceAsString());

client.close();
//输出结果
// {"_index":"user22","_type":"message22","_id":"22","_version":1,"found":true,"_source":{"user":"kimchy22","postDate":"2017-12-28T08:40:12.628Z","message":"trying out Elasticsearch22"}}
// end:{"user":"kimchy22","postDate":"2017-12-28T08:40:12.628Z","message":"trying out Elasticsearch22"}

}

/**
* 多条件获得多索引
* @throws Exception
*/
@Test
public void mutilGetIndex() throws Exception{
TransportClient client = getClient();

MultiGetResponse multiGetItemResponses = client.prepareMultiGet()
.add("user1", "message1", "1")
.add("user2", "message2", "2","3")
.add("user3", "message3", "3")
.get();

for (MultiGetItemResponse itemResponse : multiGetItemResponses) {
GetResponse response = itemResponse.getResponse();
String result ="begin";
if (response.isExists()) {
String json = response.getSourceAsString();
result = result +json+";end";
}
System.out.println(result);
}
}

/**
* 按照id,类型,索引 删除索引
* @throws Exception
*/
@Test
public void deleteIndex() throws  Exception{
TransportClient client = getClient();
DeleteResponse response = client.prepareDelete("user3","message3","3").get();
System.out.println(response.toString());
System.out.println("end:"+response.status());

client.close();

}

/**
* 按照查询条件删除索引
* @throws Exception
*/
@Test
public void deletebyQueryIndex() throws  Exception{
TransportClient client = getClient();

BulkIndexByScrollResponse response =
DeleteByQueryAction.INSTANCE.newRequestBuilder(client)
.filter(QueryBuilders.matchQuery("user", "kimchy")) //对应soure中的内容
.source("user")//索引名称
.get();

long deleted = response.getDeleted();

System.out.println("end::"+deleted);

client.close();

}


/**
* 按照条件查询获取索引
* @throws Exception
*/
@Test
public void searchIndex() throws  Exception{
TransportClient client = getClient();

SearchResponse response = client.prepareSearch("user1", "user2")
.setTypes("message1", "message2")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(QueryBuilders.termQuery("user", "kimchy1"))                 // Query
//.setPostFilter(QueryBuilders.rangeQuery("age").from(12).to(18))     // Filter
.setFrom(0).setSize(60).setExplain(true)
.get();
System.out.println("response::"+response.toString());

SearchHit[] searchHit = response.getHits().getHits();
if(null !=searchHit && searchHit.length >0){
int len = searchHit.length;
for(int j=0;j<len;j++) {
SearchHit hit = searchHit[j];
System.out.println("id:"+hit.id()+";;type:"+hit.type()
+";source:"+hit.getSourceAsString());

}
}
System.out.println(response.getHits().getHits());
System.out.println("end==");



}



}



分享到:
评论

相关推荐

    Elastic Search搭建使用教程.pdf(内含ElasticSearch教程权威指南)

    这种设计使得Elasticsearch易于使用,并且可以与任何支持HTTP和JSON的编程语言配合。为了在Java项目中使用Elasticsearch,官方推荐使用JavaHighLevelRESTClient。该客户端提供了简单易用的API进行文档的索引、搜索和...

    ES-RestAPI技术分享.docx

    ### Elasticsearch与ES-RestAPI技术概述 #### 一、Elasticsearch简介 Elasticsearch是一款高性能的分布式搜索和分析引擎,适用于实时数据处理场景。它基于Lucene构建,提供了强大的分布式多用户全文检索功能,通过...

    elasticsearch-7.7(内含一键安装脚本)

    总之,Elasticsearch 7.7 版本结合一键安装脚本 `installES.sh`,使得用户能快速搭建和使用这个强大的全文搜索引擎,无论是对大规模数据的快速检索,还是对实时分析的需求,都能提供优秀的解决方案。

    elasticsearch-7.8.0.rar

    2. 修改 `config/elasticsearch.yml` 和 `jvm.options` 文件以适应环境需求。 3. 双击 `bin/elasticsearch.bat` 启动服务,或在命令行使用 `elasticsearch-service.bat manager` 进行服务管理。 **集群搭建与扩展**...

    elasticsearch-5.6.3.zip

    Elasticsearch 5.6.3 是一个高度可扩展、高性能的开源全文搜索引擎,由Apache许可协议发布。...如果你遇到无法访问网站的问题,下载并安装这个版本的Elasticsearch,将有助于本地搭建搜索环境,进行数据管理和分析。

    Elasticsearch.zip 包含 elasticsearch、elasticsearch-analysis-ik、es-head、kibana

    此外,Elasticsearch的RESTful API使其可以与各种编程语言无缝对接,这大大增加了其通用性和易用性。 总之,这个压缩包为用户提供了全面的Elasticsearch生态环境,包括核心引擎、中文处理、管理和可视化的工具,是...

    elasticsearch6.5.0-windows

    5. **API驱动**:Elasticsearch主要通过HTTP RESTful API进行交互,这使得它易于集成到各种开发环境中,支持多种编程语言。 6. **安全性**:6.5.0版本增强了安全功能,包括用户认证、授权和加密通信,确保数据的...

    elasticsearch-7.6.2-windows-x86_64安装包,无需积分下载

    Elasticsearch是一个...总之,Elasticsearch-7.6.2是Java平台上的一个强大搜索和分析引擎,适合在Windows x86_64系统上搭建,提供灵活的部署、易用的API、高效的搜索和强大的聚合分析能力,是大数据时代的重要工具。

    最新版windows elasticsearch-8.5.3-windows-x86-64.zip

    在Windows环境下部署和使用Elasticsearch 8.5.3需要理解上述知识点,结合具体业务需求进行适当的配置和优化,以充分发挥其功能和性能优势。同时,持续关注官方更新,确保系统的稳定性和安全性。

    elasticsearch-5.6.3.tar.gz

    这个版本的压缩包文件“elasticsearch-5.6.3.tar.gz”包含了完整的Elasticsearch服务,用户可以通过解压和配置来搭建自己的搜索服务。 首先,Elasticsearch基于Apache Lucene构建,它优化了全文索引和搜索性能,使...

    elasticsearch+django搜索框架

    Elasticsearch采用了RESTful API,使得与各种编程语言的集成变得简单,包括Python。 2. Django:Django是一个高级的Python Web框架,遵循“DRY”(Don't Repeat Yourself)原则,用于快速开发安全、可维护的网站。...

    使用Hbase协作器(Coprocessor)同步数据到ElasticSearch(hbase 版本 1.2.0-cdh5.8.0, es 2.4.0 版本)

    3. **连接Elasticsearch**:在Coprocessor中,使用Elasticsearch的Java API建立与ES集群的连接,创建索引和映射,然后将HBase中的数据写入相应的Elasticsearch索引。 4. **处理数据**:根据业务需求,可能需要对...

    elasticsearch-6.1.0.tar.gz

    `elasticsearch-6.1.0.tar.gz` 是一个包含 Elasticsearch 6.1.0 版本源代码的压缩包,是搭建 ELKF 日志分析环境的重要组成部分。ELKF(Elasticsearch, Logstash, Kibana, and Filebeat)是一套强大的开源日志分析...

    elasticsearch配置好的

    这个版本可能包含了Elasticsearch服务器的可执行文件、配置文件、JAR包等,用于搭建和运行Elasticsearch服务。在使用前,需要根据官方文档配置环境变量、设置集群名称、分配内存等参数,然后启动服务。 在实际应用...

    ElasticSearch-RHLC-master.zip

    **Elasticsearch-RHLC Master** 是一...通过学习和实践Elasticsearch-RHLC Master项目,你可以掌握如何在SpringBoot环境中高效地利用Elasticsearch处理数据,这对于构建现代、高性能的搜索引擎或数据分析应用至关重要。

    Elasticsearch.zip

    以上知识点涵盖了 Elasticsearch 作为一个搜索引擎的核心功能,以及 IK 分词器和 Head 插件在中文处理和集群监控方面的应用,这些都是在搭建和使用 Elasticsearch 系统时需要了解和掌握的关键概念。

    Linux系统下的Android开发环境搭建.pdf

    在Linux环境下搭建Android应用开发环境,首先需要安装JDK,它是编写和编译Java代码的基础。然后安装Android SDK,其中包含了Android开发所需的工具、API库以及模拟器。使用SDK Manager可以下载不同版本的Android SDK...

    OpenGL ES编程指南 英文版

    《OpenGL ES编程指南》英文版是一本详细介绍OpenGL ES编程的书籍,由Aaftab Munshi、Dan Ginsburg和Dave Shreiner三位作者撰写。这本书内容全面,示例丰富,涵盖了OpenGL ES 2.0的相关知识。本书不仅为初学者提供了...

    spring cloud框架搭建参考

    7. **Spring Cloud Sleuth**:日志追踪工具,整合 Zipkin 或 ELK(Elasticsearch, Logstash, Kibana)等,用于收集微服务间的调用链信息,帮助分析性能瓶颈和问题定位。 8. **Spring Cloud Stream**:消息驱动的...

Global site tag (gtag.js) - Google Analytics