Как я могу сделать документы просроченными в эластичном поиске, используя jest api из java-приложения?

Я новичок в эластичном поиске, я хочу истечь срок действия документов, проиндексированных в эластичном поиске с помощью Jest API из приложения. Я обнаружил, что для этого есть параметр, называемый TTL. Но я столкнулся с проблемой, чтобы установить параметр как включенный и истинный из клиента jest. Пожалуйста, дайте мне знать, как это сделать. Заранее спасибо!


person sweety    schedule 27.04.2016    source источник
comment
Я советую не использовать TTL, а лучше подумать о своих данных, можно ли их структурировать так, чтобы можно было удалить весь индекс после истечения срока действия данных. Это намного эффективнее, чем использование TTL.   -  person Andrei Stefan    schedule 27.04.2016
comment
Не могли бы вы уточнить, как удалить только индексы с просроченными данными?   -  person sweety    schedule 28.04.2016
comment
Используйте инструмент Curator для удаления indices --OLDER-THAN integer_value: elastic.co/guide/en/elasticsearch/client/curator/current/   -  person Andrei Stefan    schedule 28.04.2016


Ответы (1)


Это, похоже, сработало для меня:

final String index = "myindex";
final String type = "mytype";
final String id = "myid";

final PutMapping putMapping = new PutMapping.Builder(index, type, "{ \"_ttl\" : { \"enabled\" : true } }").build();
client.execute(putMapping);

final Map<String, String> documentToIndex = new HashMap<String, String>();
documentToIndex.put("name", "Fred");
documentToIndex.put("phoneNumber", "1234");
documentToIndex.put("_ttl", "30s"); // Set the TTL

final String jsonDocument = gson.toJson(documentToIndex);
final JestResult result = client.execute(new Index.Builder(jsonDocument).index(index).type(type).id(id).build());
person Alex Spurling    schedule 17.05.2016