繁体   English   中英

Elasticsearch 1.3。 - 从Java调用自定义REST端点

[英]Elasticsearch 1.3. - Call custom REST endpoint from Java

我目前正在构建一个elasticsearch plugin ,它暴露了一个REST端点(从这篇文章开始)

我可以像这样用curl调用我的端点:

curl -X POST 'http://my-es:9200/lt-dev_terminology_v1/english/_terminology?pretty=-d '{ 
   "segment": "database", 
   "analyzer": "en_analyzer"
}

我的问题是如何使用传输客户端从java调用相同的端点? 你能指点我一些教程吗?

我建议你看看这里 这应该是一个很好的起点。

让我总结一下:

考虑以下参数:

String clustername = "...";
String clientTransportHost = "...";
Integer clientTransportPort= "...";
String clientIndex = "...";
String indexType = "...";

当然,您可以使用您想要使用的设置替换这些点。

然后定义集群Settings

Settings settings = ImmutableSettings.settingsBuilder()
        .put("cluster.name", clustername).build();

您实例化TransportClient对象:

    TransportClient client =  new TransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress(clientTransportHost, clientTransportPort));

您可以使用以下方法验证连接:

private void verifyConnection(TransportClient client) {
    ImmutableList<DiscoveryNode> nodes = client.connectedNodes();
    if (nodes.isEmpty()) {
        throw new ElasticsearchException(
                "No nodes available. Verify ES is running!");
    } else {
        log.info("connected to nodes: " + nodes.toString());
    }
}   

PS:要使用log.info()方法,您必须实例化Logger。

所以现在你可以使用验证方法:

verifyConnection(client);

一旦你完成了所有这些,你现在可以为每个例子准备一个搜索:

SearchResponse response = client.prepareSearch(clientIndex)
            .setTypes(indexType)
                            .addFields("...", "...")
            .setSearchType(SearchType.DEFAULT)
                            .execute()
                            .actionGet();

PS:在Elasticsearch 1.3上测试过

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM