原文链接:http://blog.csdn.net/geloin/article/details/8448691
在elasticsearch源代码中,进入到org.elasticsearch.client,你会发现下图所示的类:
我们从最外层开始。
1 org.elasticsearch.client.AdminClient接口
AdminClient下有两个方法:
1) cluster(),产生一个允许从集群中执行action或操作的client;
2) indices(),产生一个允许从索引中执行action或操作的client。
AdminClient接口有两个实现类,分别为org.elasticsearch.client.AdminClient.NodeAdminClient和org.elasticsearch.client.transport.support.InternalTransportAdminClient。
1.1 org.elasticsearch.client.AdminClient.NodeAdminClient类
NodeAdminClient有一个带有@Inject注解的构造器,并实现了接口AdminClient的两个方法,如下所示:
@Inject public NodeAdminClient(Settings settings, NodeClusterAdminClient clusterAdminClient, NodeIndicesAdminClient indicesAdminClient) { super(settings); this.indicesAdminClient = indicesAdminClient; this.clusterAdminClient = clusterAdminClient; } @Override public IndicesAdminClient indices() { return indicesAdminClient; } @Override public ClusterAdminClient cluster() { return this.clusterAdminClient; }
@Inject导致了一个直接的后果:你只能通过被@Inject标注的构造器生成实例。
indices()和cluster()覆盖了AdminClient的同名方法,分别返回NodeIndicesAdminClient和NodeClusterAdminClient对象。
NodeAdminClient会继承父类org.elasticsearch.common.component.AbstractComponent的nodeName()方法用以获取当前节点的名称。
1.2 org.elasticsearch.client.transport.support.InternalTransportAdminClient类
InternalTransportAdminClient其实与NodeAdminClient类似,只是它的indices()和cluster()分别返回的是InternalTransportIndicesAdminClient和InternalTransportClusterAdminClient。
NodeAdminClient和InternalTransportAdminClient均没有子类,所以只有当我们需要用到NodeIndicesAdminClient、NodeClusterAdminClient、InternalTransportIndicesAdminClient或InternalTransportClusterAdminClient时,才考虑创建这两个类的实体。
--------------------------------------------------------------------------------------------------------------------------------
(注:不清楚原博主使用的是哪个版本,我在2.3.1版本里看到的org.elasticsearch.client.AdminClient接口仅一个实现类,且还是org.elasticsearch.client.support.AbstractClient中的静态内部类,
而org.elasticsearch.client.node.NodeClient + org.elasticsearch.client.transport.TransportClient为AbstractClient的子类)
{ static class Admin implements AdminClient { private final ClusterAdmin clusterAdmin; private final IndicesAdmin indicesAdmin; public Admin(ElasticsearchClient client) { this.clusterAdmin = new ClusterAdmin(client); this.indicesAdmin = new IndicesAdmin(client); } @Override public ClusterAdminClient cluster() { return clusterAdmin; } @Override public IndicesAdminClient indices() { return indicesAdmin; } } }
2 org.elasticsearch.client.Client接口
Client为从集群中执行action或operation提供了一站式接口,这里的所有操作都是自然而然地异步执行的,每个action或operation都有两种风格,一种是简单地返回一个org.elasticsearch.action.ActionFuture,另一种是访问一个org.elasticsearch.action.ActionListener。你可以在org.elasticsearch.node.Node启动时取得一个Client,也可以使用org.elasticsearch.client.transport.TransportClient远程连接一个或多个节点。
Client有以下方法:(注:如下使用了中划线的为2.3.1中已不存在的方法)
1) close(),关闭客户端;
2) admin(),返回一个可以执行管理性操作的客户端;
3) 两个execute,用于执行一般性操作,这里的一般性与上文提到的管理性相对;
4) prepareExecute,准备一个RequestBuilder对象,得到RequestBuilder对象后再做执行操作,当然,在这之间,你可以做一些个性化设置;
5) index(IndexRequest request),根据给写的index和type索引一个JSON资源,index和type由IndexRequest提供,IndexRequest也可提供id,若不提供时,id将自动生成;
6) index(IndexRequest request, ActionListener<IndexResponse> listener),与index(IndexRequest request)的区别在于它不会直接返回索引创建的结果,而是将结果转给监听器,由listener来通知请求者;
7) prepareIndex()、prepareIndex(String index, String type)、prepareIndex(String index, String type, @Nullable String id),准备创建索引,及索引/类型/ID;
8) update(UpdateRequest request),基于一个script更新文档,返回更新后的结果;
9) update(UpdateRequest request, ActionListener<UpdateResponse> listener),更新,但不返回结果,而是交由监听器;
10) prepareUpdate()、prepareUpdate(String index, String type, String id),准备更新,但不执行更新;
11) delete(DeleteRequest request)、delete(DeleteRequest request, ActionListener<DeleteResponse> listener),根据DeleteRequest提供的index、type和id从索引中删除文档;
12) prepareDelete()、prepareDelete(String index, String type, String id),准备删除,但不执行删除;
13) bulk(BulkRequest request)、bulk(BulkRequest request, ActionListener<BulkResponse> listener),批量操作(索引 / 删除);
14) prepareBulk(),准备执行批量操作(索引 / 删除),但不执行;
15) deleteByQuery(DeleteByQueryRequest request)、deleteByQuery(DeleteByQueryRequest request, ActionListener<DeleteByQueryResponse> listener),替代基于查询删除索引
16) prepareDeleteByQuery(String... indices),准备删除,但不执行删除;
17) get(GetRequest request)、get(GetRequest request, ActionListener<GetResponse> listener)根据GetRequest提供的index、type和id获取文档;
18) prepareGet()、prepareGet(String index, @Nullable String type, String id),准备获取,但不执行获取;
19) multiGet(MultiGetRequest request)、multiGet(MultiGetRequest request, ActionListener<MultiGetResponse> listener),批量获取文档;
20) prepareMultiGet(),准备批量获取,但不执行获取操作;
21) count(CountRequest request)、count(CountRequest request, ActionListener<CountResponse> listener),获取适应特定query的文档数量;
22) prepareCount(String... indices),准备获取适应特定query的文档数量,但不获取;
23) search(SearchRequest request)、search(SearchRequest request, ActionListener<SearchResponse> listener),根据SearchRequest提供的index、id和type执行搜索;
24) prepareSearch(String... indices),准备但不搜索;
25) searchScroll(SearchScrollRequest request)、searchScroll(SearchScrollRequest request, ActionListener<SearchResponse> listener)、prepareSearchScroll(String scrollId),通过用于迭代搜索结果;
26) multiSearch(MultiSearchRequest request)、multiSearch(MultiSearchRequest request, ActionListener<MultiSearchResponse> listener)、prepareMultiSearch(),执行多个搜索请求;
27) moreLikeThis(MoreLikeThisRequest request)、moreLikeThis(MoreLikeThisRequest request, ActionListener<SearchResponse> listener)、prepareMoreLikeThis(String index, String type, String id),类似于数据库中的like操作,先根据index、type、id找到一个document,再找到跟这个文档like的其他文档;
28) percolate(PercolateRequest request)、percolate(PercolateRequest request, ActionListener<PercolateResponse> listener)、preparePercolate(String index, String type),过滤一个请求,返回匹配的结果;
29) explain(ExplainRequest request)、explain(ExplainRequest request, ActionListener<ExplainResponse> listener)、prepareExplain(String index, String type, String id),为指定的请求计算一个score。
30) clearScroll(ClearScrollRequest request)、clearScroll(ClearScrollRequest request, ActionListener<ClearScrollResponse> listener)、prepareClearScroll(),清除与指定ID相关的搜索上下文。
31) deleteIndexedScript(DeleteIndexedScriptRequest request)、deleteIndexedScript(DeleteIndexedScriptRequest request,ActionListener<DeleteIndexedScriptResponse> listener),删除索引。
32) fieldStats(FieldStatsRequest request)、fieldStats(FieldStatsRequest request, ActionListener<FieldStatsResponse> listener),字段统计,prepareFieldStats()准备字段统计。
33) getIndexedScript(GetIndexedScriptRequest request)、getIndexedScript(GetIndexedScriptRequest request, ActionListener<GetIndexedScriptResponse> listener),通过index、type、ID获取被索引的文档。
34) Headers headers(); 头信息
35) multiPercolate(MultiPercolateRequest request)、multiPercolate(MultiPercolateRequest request, ActionListener<MultiPercolateResponse> listener),批量过滤请求。
36) multiTermVectors(MultiTermVectorsRequest request)、multiTermVectors(MultiTermVectorsRequest request, ActionListener<MultiTermVectorsResponse> listener);获取多个条件向量
37) prepareMultiGet() 准备获取多个文档;prepareMultiPercolate()准备过滤过个请求;
38) prepareSuggest()、suggest(SuggestRequest request)、suggest(SuggestRequest request, ActionListener<SuggestResponse> listener);匹配特定的短语
39) settings()返回客户端的设置信息
相关推荐
Elasticsearch(简称ES)是一款强大的开源搜索引擎,广泛应用于数据检索、分析和管理。作为分布式、RESTful风格的搜索和数据分析引擎,Elasticsearch能够提供实时、高可用性以及可扩展的搜索功能。在进行日常的数据...
ElasticSearch客户端工具是用于管理和操作Elasticsearch(ES)集群的重要软件,它们提供了一种直观、高效的方式来查看和管理ES集群的状态、索引、文档以及执行查询和分析任务。这些工具极大地简化了对Elasticsearch...
这个标题表明我们要讨论的是一个使用Maven构建的Spring MVC应用程序,它集成了Elasticsearch客户端。Maven是一个流行的Java项目管理工具,用于构建、依赖管理和项目信息管理。Spring MVC是Spring框架的一个模块,...
Elasticsearch(简称ES)是一种强大的开源搜索引擎,广泛应用于大数据分析和全文检索领域。作为Big Data解决方案的一部分,它以其高效、灵活和可扩展性而闻名。本文将深入探讨如何使用客户端工具来便捷地进行ES的增...
第一步:启动一个elasticsearch服务,bin目录下的elasticsearch.bat 第二步:建索引,执行MusicReviewIndex中的单元测试方法index() 第三步:检索测试,执行MusicReviewSearch中的单元测试方法search() 本实例基于: ...
总的来说,Elasticsearch 7.12.1 for Windows客户端配合Cerebro,为Windows用户提供了一个强大且易用的搜索和分析解决方案,使得在本地环境中管理和操作Elasticsearch变得更加便捷。无论是开发人员进行测试,还是...
Go-elastigo是基于Go语言(Golang)的一个强大的Elasticsearch客户端库,由Matt Baird开发。这个库提供了丰富的API接口,使得在Go应用中与Elasticsearch进行交互变得更加简单和高效。Elasticsearch是一款流行的、...
在使用`go-elasticsearch`时,首先需要导入库,并创建一个客户端实例。然后,可以通过客户端执行各种操作,如创建索引、插入文档、搜索等。以下是一个简单的示例: ```go import ( "github....
Elasticsearch 6.1.2中的高级REST客户端(High Level REST Client)提供了一组面向对象的API,简化了与Elasticsearch REST API的交互。它封装了网络通信、JSON序列化和错误处理,使得开发者可以更专注于业务逻辑。 ...
Elasticsearch Desktop GUI客户端。 用于创建和测试查询的IDE。
Java客户端Jest是与Elasticsearch交互的一种高效工具,它提供了简单的API,使得在Java应用中操作Elasticsearch变得简单易行。本资源包含的是Jest客户端的全部依赖jar包,确保了在Java项目中使用Jest进行Elastic...
标签《ES Java API 中文文档》强调了文档的内容属性,它属于ElasticSearch的一个重要组成部分,即用Java语言进行数据交互和操作的应用程序接口部分。 从部分内容中可以提取出以下知识点: 1. **Transport Client**...
Elasticsearch是一款强大的开源搜索引擎,被广泛应用于数据分析、日志分析、全文检索等场景。其官方提供的PHP客户端库,为开发者提供了与Elasticsearch服务器进行交互的便利工具,使得在PHP环境中操作Elasticsearch...
`:创建客户端实例。 - `if (!response.IsValid)`:检查索引是否存在,如果不存在则执行创建索引的操作。 - 创建索引时指定了索引的初始状态`newIndexState()`,包括分片数`NumberOfShards`为5和副本数`...
**Elasticsearch(ES)** 是一个开源的全文搜索引擎,基于Lucene构建,设计用于分布式、容错,并提供实时分析功能。它不仅用于搜索,还广泛应用于日志收集、数据分析和大数据处理等领域。本篇文章将深入探讨如何安装...
安装完成后,在代码中导入并创建客户端实例: ```javascript const { Client } = require('@elastic/elasticsearch'); const client = new Client({ node: 'http://localhost:9200' }); ``` 这里的`node`参数指定...
1. **Elasticsearch基础**:Elasticsearch(ES)是一个开源的、分布式全文搜索引擎,它提供了实时数据分析的能力,广泛用于日志分析、监控、搜索应用等领域。其核心特性包括分布式、RESTful接口、实时性、可扩展性和...
安装完成后,我们可以在PHP代码中创建一个Elasticsearch客户端实例,连接到Elasticsearch服务。在ThinkPHP框架中,你可能在`ThinkPHP\Library\Vendor`文件夹下创建一个`Elasticsearch.php`文件,用于封装连接逻辑:...
这会创建一个指向Elasticsearch实例的客户端对象。 **执行CRUD操作** 一旦连接建立,就可以进行创建、读取、更新和删除(CRUD)操作。以下是一些基本示例: - **创建文档(Indexing)**: 使用`index/3`或类似...
这个名为"基于.netcore搜索封装ElasticSearch.zip"的压缩包,显然包含了一个针对.NET Core平台的Elasticsearch客户端库,方便开发者在.NET Core应用中集成和操作Elasticsearch。 Elasticsearch是一个开源的分布式...