我正在使用Java API的Elasticsearch。Elasticsearch自動刷新索引index.refresh = -1?
我索引大批量插入離線數據,所以我設置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();