Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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
Java elasticsearch:找不到索引数据(单元节点已关闭)_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java elasticsearch:找不到索引数据(单元节点已关闭)

Java elasticsearch:找不到索引数据(单元节点已关闭),java,elasticsearch,Java,elasticsearch,我正试图开始使用elasticsearch(长期使用compass),但我在基础知识方面遇到了一些相当严重的问题,这非常令人沮丧 我目前面临的问题是,索引数据直到节点关闭后才会显示。这是我的代码示例 Node node = nodeBuilder().node(); Client client = node.client(); client.prepareIndex("index1", "type1", "1").setSource("{ \"name\": \"Aaron\"}").exec

我正试图开始使用elasticsearch(长期使用compass),但我在基础知识方面遇到了一些相当严重的问题,这非常令人沮丧

我目前面临的问题是,索引数据直到节点关闭后才会显示。这是我的代码示例

Node node = nodeBuilder().node();
Client client = node.client();

client.prepareIndex("index1", "type1", "1").setSource("{ \"name\": \"Aaron\"}").execute().actionGet();
client.prepareIndex("index1", "type1", "2").setSource("{ \"name\": \"Andrew\"}").execute().actionGet();
client.prepareIndex("index1", "type1", "3").setSource("{ \"name\": \"Alistair\"}").execute().actionGet();

QueryBuilder queryBuilder = QueryBuilders.wildcardQuery("name", "a*");
SearchRequestBuilder searchRequestBuilder = client.prepareSearch("index1");
searchRequestBuilder.setTypes("type1");
searchRequestBuilder.setSearchType(SearchType.DEFAULT);
searchRequestBuilder.setQuery(queryBuilder);

SearchResponse response = searchRequestBuilder.execute().actionGet();
System.out.println("Response contains " + response.getHits().totalHits() + " hits");
for (SearchHit currentHit : response.getHits())
{
    System.out.println(currentHit.getSourceAsString());
}

client.close();
node.close();
我第一次运行它时,在搜索中没有找到任何点击。但是,如果我再次运行它,它确实会找到所有以字母“A”开头的名称(不要让我开始自动降低索引项的大小写,但不要让我开始搜索,这花费了我一个多小时)

如果我取消关闭,不管我运行上面的代码多少次,我都找不到结果。但是,如果我添加close语句,它会再次工作(每次)

这感觉像是与未刷新的缓冲索引更改有关

我确信我遗漏了一些明显和基本的东西。但是我就是不能把手指放在上面。

在搜索最新的更改之前,您想先查看索引。在执行搜索之前,将其放在索引之后:

client.admin().indices().prepareRefresh("index1").execute().actionGet();
在默认设置下,Elasticsearch将每隔1秒定期调用
refresh