我的应用正在使用Http休息呼叫请求我的Elastic实例。为此,我在我的Rest调用中直接使用我的实例的IP。
如果我想添加副本,我应该更改什么?如果主节点出现故障,我的应用程序将如何知道副本的IP?
由于
答案 0 :(得分:0)
根据您用于进行http rest调用的客户端,您可以配置群集中的服务器数量。例如,对于JS客户端
var client = new elasticsearch.Client({
hosts: [
'https://server1:9200',
'https://server2:9200'
]
});
参考here
答案 1 :(得分:0)
如果您使用的是Java或JVM语言,则可以使用RestClient。这是导入:
import org.elasticsearch.client.RestClient;
如果您使用的是Maven依赖项,请使用以下代码:
<!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch -->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<!-- add the x-pack jar as a dependency (optional) -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>x-pack-transport</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
以下是一些创建索引的示例方法,使用RestClient
搜索索引:
public Response getIndex(String indexName) throws IOException {
return restClient.performRequest("GET", String.format("/%s", indexName));
}
public Response createIndex(String indexName, String json) throws IOException {
HttpEntity entity = new NStringEntity(json, ContentType.APPLICATION_JSON);
return restClient.performRequest("PUT", String.format("/%s", indexName),
Collections.singletonMap("pretty", "true"), entity);
}
public Response searchIndex(String indexName, String recordType, Map<String, String> otherParameters) throws IOException {
return restClient
.performRequest("GET", String.format("/%s/%s/_search", indexName, recordType), otherParameters);
}
为了构建RestClient实例,您应该使用org.elasticsearch.client.RestClientBuilder
类。