修改 This is basically what I want to do, only in Java
使用ElasticSearch,我们将文档添加到绕过IndexRequest项目的索引到BulkRequestBuilder。
我希望在一段时间过后(生存时间/ ttl)从索引中删除文档
可以通过设置索引的默认值或基于每个文档来完成此操作。 我这两种方法都没问题。
以下代码是尝试按文档执行此操作。这是行不通的。我认为这是因为没有为索引启用TTL。 要么告诉我需要添加哪些Java代码来启用TTL,以便下面的代码可以工作,或者显示不同的代码,使TTL +为Java中的索引设置默认TTL值我知道{{3}但是如果可能的话,我需要从Java代码中完成它。
logger.debug("Indexing record ({}): {}", id, map);
final IndexRequest indexRequest = new IndexRequest(_indexName, _documentType, id);
final long debug = indexRequest.ttl();
if (_ttl > 0) {
indexRequest.ttl(_ttl);
System.out.println("Setting TTL to " + _ttl);
System.out.println("IndexRequest now has ttl of " + indexRequest.ttl());
}
indexRequest.source(map);
indexRequest.operationThreaded(false);
bulkRequestBuilder.add(indexRequest);
}
// execute and block until done.
BulkResponse response;
try {
response = bulkRequestBuilder.execute().actionGet();
稍后我通过轮询此方法检查我的单元测试,但文档计数永远不会下降。
public long getDocumentCount() throws Exception {
Client client = getClient();
try {
client.admin().indices().refresh(new RefreshRequest(INDEX_NAME)).actionGet();
ActionFuture<CountResponse> response = client.count(new CountRequest(INDEX_NAME).types(DOCUMENT_TYPE));
CountResponse countResponse = response.get();
return countResponse.getCount();
} finally {
client.close();
}
}
答案 0 :(得分:1)
经过长时间的谷歌搜索和编写测试程序后,我想出了一个如何使用Java API中的ttl和基本索引/对象创建的工作示例。坦率地说,文档中的大多数示例都是微不足道的,一些JavaDoc和端到端示例将会帮助我们这些使用非REST接口的人。
好啊。