弹性搜索:如何检索索引数据

时间:2015-05-20 06:30:11

标签: import elasticsearch

在弹性搜索java api中,假设我正在使用此客户端构建索引数据

Node node = nodeBuilder().clusterName("es").node();
Client client = node.client();

IndexResponse response = client.prepareIndex("twitter", "tweet", "1")
    .setSource(jsonBuilder()
                .startObject()
                    .field("user", "kimchy")
                    .field("postDate", new Date())
                    .field("message", "trying out Elasticsearch")
                .endObject()
              )
    .execute()
    .actionGet();

此索引数据存储在XYZ / elasticsearch / data文件夹中。 我的问题是如何从一些其他客户端或其他代码中检索java中的索引数据。有没有什么方法可以提供路径,并且已经索引的数据可以导入,然后我可以对它执行查询?

编辑:

其他计算机上的客户端代码

    Node node = nodeBuilder().clusterName("es").node();
Client client = node.client();

MatchQueryBuilder qb = QueryBuilders.matchQuery("user", "kimchy");
SearchRequestBuilder srb = client.prepareSearch("twitter").setTypes("tweet");
SearchResponse big = srb.setQuery(qb).execute().actionGet();
SearchHit[] results = big.getHits().getHits();

显示

  search.SearchPhaseExecutionException: Failed to execute phase [query], all shards failed

由于

的Arya

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解这个问题,但是如果只是在java中查询这里就是一个例子:

MatchQueryBuilder qb = QueryBuilders.matchQuery("user", "kimchy);
SearchRequestBuilder srb = client.prepareSearch("twitter").setTypes("tweet");
srb.setQuery(qb);
SearchResponse response = srb.execute().actionGet();
//Here goes your code where you use response.getHits() that contains your items

答案 1 :(得分:0)

使用我的代码段获得的消息通常表明您的客户端无法连接到您的服务器。检查您的服务器状态(即您正确启动了服务器)并尝试使用它。

    Node node = NodeBuilder.nodeBuilder().client(true).node();
    client = node.client();

我认为您不需要指定clustername,除非您有一些我不知道的自定义配置。还要检查索引名称。