1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/consolelog-chinese_translation_of_elasticsearchjavaapi

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
readme.md 3.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
王斌 Отправлено 22.05.2019 09:50 3cfb745

Client

你有很多方法来使用 java client

  • 在一个已有的集群中执行标准的indexgetdeletesearch操作。
  • 在一个已有的集群中执行管理任务

获取 ES client 很简单。最常用的方法就是创建一个连接到集群的TransportClient,并从中获取client。

重要:集群中的客户端节点必须重要版本相同(例如5.6.8和5.6.2,2.4.6和2.4.0)。 虽然不同版本的客户端可以同时连接到同一个集群中,但是一些新版本的新特性在旧版本可能就不会被支持了。 所以理想情况就是客户端和集群中的节点版本都相同

警告:在ES7.0中我们不建议您使用TransportClient,它将会在8.0中被移除。 所以请尽量快速地习惯并使用JavaHighLevelClient。JavaHighLevelClient目前已经支持大部分常用的API,但是还有一些需要补充。 你可以点击这里把你的应用需要添加的api告诉我们。 任何尚未支持的API仍然可以使用 low level Java REST Client 通过json的方式来调用。

TransportClient

TransportClient 使用 transport模块远程连接到ES集群。 它并不是加入到集群中,而只是获取一个或多个初始传输地址,在操作的时候以循环的方式与之通信(大部分操作可能都是TwoHop操作)

// on startup

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
        .addTransportAddress(new TransportAddress(InetAddress.getByName("host1"), 9300))
        .addTransportAddress(new TransportAddress(InetAddress.getByName("host2"), 9300));

// on shutdown

client.close();

注意如果你的集群名称不是 elasticsearch 的话,你需要设置成你自己的:

Settings settings = Settings.builder()
        .put("cluster.name", "myClusterName").build();
TransportClient client = new PreBuiltTransportClient(settings);
//Add transport addresses and do something with the client...

Transport client 具有嗅探的特性,可以自动添加新主机和删除旧主机。 当嗅探被开启时,transport client通过调用addTransportAddress方法与内部节点列表中的某一个节点建立连接。 在这之后,client就可以调用节点内部的API来获取数据了。 客户端内部的节点列表会替换这些数据节点,列表默认情况下每5秒刷新一次。 注意嗅探所连接的ip地址可以声明在es的配置文件中。

请记住,如果该节点连接的不是数据节点,那么这个节点列表可能不会包含它的原始节点。 例如,你初始化并连接到了一个主节点,在嗅探之后,接下来的请求都不会发送到这个主节点,而是发送到其它的数据节点。 transport client排除非数据节点的原因,是为了避免向主节点发送搜索请求。

想起用嗅探特性,请设置client.transport.snifftrue

Settings settings = Settings.builder()
        .put("client.transport.sniff", true).build();
TransportClient client = new PreBuiltTransportClient(settings);

transport client级别的其它设置:

参数 作用
client.transport.ignore_cluster_name 设置成true可以忽略节点名称的校验。(v0.19.4+)
client.transport.ping_timeout ping超时时间,默认5秒。
client.transport.nodes_sampler_interval sample/ping节点列表并连接的间隔,默认5

将client连接到一个节点

在本地连接到一个节点, 然后在应用中创建一个 TransportClient吧。 这样这个节点就可以加载你需要的任何插件了(例如discovery插件)。

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/consolelog-chinese_translation_of_elasticsearchjavaapi.git
git@api.gitlife.ru:oschina-mirror/consolelog-chinese_translation_of_elasticsearchjavaapi.git
oschina-mirror
consolelog-chinese_translation_of_elasticsearchjavaapi
consolelog-chinese_translation_of_elasticsearchjavaapi
master