该问题可能是由于Elasticsearch版本的不兼容性引起的。如果您使用的是Elasticsearch 5.x版本,那么您需要使用传输类型为TransportClient而不是Netty4Transport。如下所示:
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
如果您使用的是Elasticsearch 6.x版本,则需要使用Elasticsearch的高级REST API来建立连接。如下所示:
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));