请问elasticsearch和elasticserch client有什么关系?我看了很多elasticsearch教程,里面不教elasticsearch client的作用和用法呀
Elasticsearch是一个分布式搜索和分析引擎,Elasticsearch client则是管理的工具。
Elasticsearch是一个开源的分布式搜索和分析引擎,用于存储、搜索和分析大规模的数据。它基于Lucene库,提供了强大的全文搜索、结构化搜索、分析和数据聚合功能。
Elasticsearch client则是用于与Elasticsearch集群进行通信的库或工具。它允许开发人员通过编程语言或命令行界面与Elasticsearch进行交互,执行各种操作,如索引(indexing)文档、搜索(searching)文档、执行聚合(aggregations)和管理Elasticsearch集群。
Elasticsearchclient的主要作用和用法:
1、执行索引操作:
Elasticsearch客户端可以用于将文档索引到Elasticsearch集群中。开发人员可以使用客户端提供的接口来创建、更新或删除文档,并指定文档在集群中的索引和类型。
2、执行搜索操作:
Elasticsearch客户端可以用于执行丰富的搜索操作,包括全文搜索、结构化搜索、复杂的查询和过滤操作。开发人员可以使用客户端提供的查询语言或API来构建搜索查询,并从Elasticsearch集群中检索匹配的文档。
3、执行聚合操作:
Elasticsearch客户端可以用于执行聚合(aggregations)操作,用于在集群中对数据进行统计和计算。开发人员可以使用客户端提供的聚合语言或API来构建聚合查询,并从Elasticsearch集群中检索聚合结果,如平均值、总和、最小值、最大值等。
4、管理集群:
Elasticsearch客户端可以用于管理Elasticsearch集群,包括索引、映射、设置和节点的管理。开发人员可以使用客户端提供的接口来创建、删除、更新索引,配置集群的设置,管理节点和分片等。
5、错误处理和故障排除:
Elasticsearch客户端通常提供了错误处理和故障排除的功能,可以帮助开发人员在与Elasticsearch通信过程中处理错误和异常情况,并通过日志和调试信息来诊断和解决问题。
Elasticsearch是一个开源搜索和分析引擎,它基于Lucene搜索引擎,并提供了RESTful API来进行数据的增删改查操作。Elasticsearch不仅仅可以用于文本搜索,还可以用于结构化数据的搜索和分析。例如,它可以对Web日志进行实时分析,也可以在大型电商网站中处理商品的搜索。
Elasticsearch客户端是用Java编写的,它与Elasticsearch服务器进行交互。客户端可以通过RESTful API、Java API或命令行接口(CLI)的方式与Elasticsearch服务器交互,以提供各种功能。例如,客户端可以在Elasticsearch服务器上创建索引、插入文档、搜索文档等操作,并获取结果。客户端通常位于应用程序或开发工具中,用于与Elasticsearch服务器进行通信,以便用户可以直接从应用程序中使用Elasticsearch的功能。
因此,Elasticsearch和Elasticsearch客户端是密切相关的。Elasticsearch提供了搜索和分析的引擎,而Elasticsearch客户端提供了一种与Elasticsearch服务器进行交互的方式。客户端可以通过各种方式对Elasticsearch服务器进行操作,从而满足各种使用场景的需求。在学习Elasticsearch时,理解Elasticsearch客户端也是非常重要的一部分。
package com.troll.bigdata.component.example.elasticsearch.example;
import com.google.gson.Gson;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class ConnectES {
public static void main(String[] args) {
/**
* 官方参考链接
* https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html
*/
////// 读取ES配置
String host = "localhost";
int port = 8300;
// 打印es连接信息
System.out.println("host:" + host + ",port:" + port);
// // 获取settings
Settings settings = Settings.builder()
.put("client.transport.sniff", false)
.put("cluster.name", "troll_es_dev").build();
// 客户端对象
TransportClient client = null;
// 建立ES连接
try {
client = new PreBuiltTransportClient(settings)
.addTransportAddress(new TransportAddress(InetAddress.getByName(host), port));
} catch (UnknownHostException e) {
e.printStackTrace();
}
// json拼装
String json = "{" +
"\"uid\":1,"+
"\"user\":\"kimchy\"," +
"\"postDate\":\"2013-01-30\"," +
"\"message\":\"trying out Elasticsearch\"" +
"}";
// 执行api
IndexResponse response = client.prepareIndex("twitter", "_doc","1")
.setSource(json, XContentType.JSON)
.get();
// 提取返回值,放入map,便于查看
Map<String,Object> rep = new HashMap<String, Object>();
// Index name
rep.put("_index",response.getIndex());
// Type name
rep.put("_type",response.getType());
// Document ID (generated or not)
rep.put("_id",response.getId());
// Version
rep.put("_version",response.getVersion());
// status has stored current instance statement.
rep.put("status",response.status().getStatus());
// 打印返回值,转json是为了方便查看
Gson gson = new Gson();
System.out.println(gson.toJson(rep));
// 释放客户端
client.close();
}
}
执行效果:
host:localhost,port:8300
{"_index":"twitter-new","_type":"_doc","_id":"1","_version":5,"status":200}
** 查看elasticsearch java客户端插入的数据 **
# 查看索引数据
GET /twitter/_doc/1
执行效果如下:
{
“_index” : “twitter-new”,
“_type” : “_doc”,
“_id” : “1”,
“_version” : 5,
“_seq_no” : 6,
“_primary_term” : 1,
“found” : true,
“_source” : {
“uid” : 1,
“user” : “kimchy”,
“postDate” : “2013-01-30”,
“message” : “trying out Elasticsearch”
}
}
从反馈结果看,数据已插入ES。