【发布时间】:2016-02-19 00:04:50
【问题描述】:
我正在使用 Elasticsearch 和 Java API。
我用大批量插入索引离线数据,所以我设置index.refresh=-1
我不会在任何地方“手动”刷新索引。
似乎刷新在某个时候完成,因为查询确实返回数据。唯一没有返回数据的情况是我只测试了几个文档,并且在插入后立即进行了查询(使用相同的Client 对象)。
我想知道 Elasticsearch 或 Java 库是否在某个阶段隐式调用索引刷新,即使在 index.refresh=-1 时也是如此?
或者如何解释这种行为?
客户端生成:
Client client = TransportClient.builder().settings(settings)
.build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(address),port));
插入:
BulkRequestBuilder bulkRequest = client.prepareBulk();
for (MyObject object : list) {
bulkRequest.add(client.prepareIndex(index, type)
.setSource(XContentFactory.jsonBuilder()
.startObject()
// ... add object fields here ...
.endObject()
));
}
BulkResponse bulkResponse = bulkRequest.get();
查询:
QueryBuilder query = ...;
SearchResponse resp = client.prepareSearch(index)
.setQuery(query)
.setSize(Integer.MAX_VALUE)
// adding fields here
.get();
SearchHit[] = resp.getHits().getHits();
【问题讨论】:
标签: java elasticsearch