Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
弹性搜索1.3。-从Java调用自定义REST端点_Java_Rest_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Java,Rest,elasticsearch" /> elasticsearch,Java,Rest,elasticsearch" />

弹性搜索1.3。-从Java调用自定义REST端点

弹性搜索1.3。-从Java调用自定义REST端点,java,rest,elasticsearch,Java,Rest,elasticsearch,我目前正在构建一个elasticsearch插件,它公开了一个REST端点(从这里开始) 我可以用curl调用我的端点,如下所示: curl -X POST 'http://my-es:9200/lt-dev_terminology_v1/english/_terminology?pretty=-d '{ "segment": "database", "analyzer": "en_analyzer" } 我的问题是如何使用传输客户端从java调用相同的端点?你能给我指一些教程

我目前正在构建一个
elasticsearch插件
,它公开了一个
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 = 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());
    }
}   
完成所有步骤后,您现在可以根据示例准备搜索:

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

PS:在Elasticsearch 1.3上进行了测试

感谢您的回复。我的问题不是如何创建传输客户端,而是如何使用它访问我自己的端点。我发现这个很棒的教程()很有帮助,但现在我不知道如何访问transport类中的client对象,因为我需要的是使用现有的功能…我可以知道为什么它被否决了吗?至少,如果你不同意我的答案,表现得像一个有礼貌的成年人,评论一下你为什么否决了一个有效的答案。
SearchResponse response = client.prepareSearch(clientIndex)
            .setTypes(indexType)
                            .addFields("...", "...")
            .setSearchType(SearchType.DEFAULT)
                            .execute()
                            .actionGet();