官术网_书友最值得收藏!

  • ElasticSearch Cookbook
  • Alberto Paro
  • 382字
  • 2021-04-02 10:09:56

Using the Native protocol

ElasticSearch provides a Native protocol, used mainly for low-level communication between nodes, but very useful for fast importing of huge data blocks. This protocol is available only for JVM languages.

Getting ready

You need a working ElasticSearch cluster— the standard port for Native protocol is 9300.

How to do it…

Creating a Java client is quite easy. Take a look at the following code snippet:

import net.thenetplanet.common.settings.ImmutableSettings;
import net.thenetplanet.common.settings.Settings;
import net.thenetplanet.client.Client;
import net.thenetplanet.client.transport.TransportClient;
     …
Settings settings = ImmutableSettings.settingsBuilder()
.put("client.transport.sniff", true).build();
    // we define a new settings
    // using snif transport allows to autodetect other nodes
Client client = new TransportClient(settings)
                .addTransportAddress(new InetSocketTransportAddress("127.0.0.1","9300));
    // a client is created with the settings

How it works...

To initialize a native client some settings are required. The important ones are:

  • cluster.name: This provides the name of the cluster
  • client.transport.sniff: This allows sniff the rest of the cluster, and add those into its list of machines to use.

With these settings it's possible to initialize a new client giving an IP address and port (default 9300).

There's more…

This is the internal protocol used in ElasticSearch—it's the faster protocol available to talk with ElasticSearch.

The Native protocol is an optimized binary one and works only for JVM languages. To use this protocol, you need to include elasticsearch.jar in your JVM project. Because it depends on ElasticSearch implementation, it must be the same version of ElasticSearch cluster.

For this reason, every time you update your ElasticSearch Server/Cluster, you need to update elasticsearch.jar of your projects and if there are internal API changes, you need to modify your application code.

To use this protocol you also need to study the internals of ElasticSearch, so it's not so easy to use as HTTP and Thrift protocol.

Native protocol is useful for massive data import. But as ElasticSearch is mainly thought of as a REST HTTP server to communicate with, it lacks support for everything is not standard in ElasticSearch core, such as plugins entry points. Using this protocol you are unable to call entry points made by externals plugins.

See also

The Native protocol is the most used protocol in the Java world and it will be discussed in detail in Chapter 10, Java Integration and Chapter 12 , Plugin Development.

主站蜘蛛池模板: 天柱县| 开化县| 千阳县| 遵化市| 公主岭市| 莒南县| 沁阳市| 大丰市| 武乡县| 留坝县| 祁阳县| 湛江市| 溆浦县| 西丰县| 甘肃省| 望城县| 获嘉县| 沽源县| 平罗县| 安阳市| 和田市| 莱阳市| 嵊州市| 托里县| 北票市| 泗阳县| 南阳市| 涟水县| 双柏县| 泾川县| 深水埗区| 农安县| 永寿县| 津市市| 京山县| 西安市| 合阳县| 凤台县| 阳高县| 正宁县| 易门县|