使用high level client,我可以将KV对(作为文档)发送到Elastic。我可以使用curl来查询它们,所以我知道它们在其中。它们所缺少的等同于logstash似乎添加的“@timestamp”值。我还没有发现此字段的语法是什么(或适当的字段是什么)。
时代? TZ?
最佳答案
FWIW-如果您希望这些值在kibana中可用,请使用SimpleDateFormat,如下所示:
Date date = new Date(System.currentTimeMillis());
// Conversion
SimpleDateFormat sdf;
sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String stamp = sdf.format(date);
然后将其作为“@timestamp”添加到您的HashMap中:
// write to elastic
RestHighLevelClient client = getClient();
Map<String, Object> mapObject = new HashMap();
mapObject.put("type", "consumer_test");
mapObject.put("test.group", group);
mapObject.put("test.topic", topic);
mapObject.put("test.sum", sumLag);
mapObject.put("@timestamp", stamp);
IndexRequest indexRequest = new IndexRequest(index).source(mapObject);
try {
IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);
client.close();
} catch(Exception e) {
LOGGER.error("exception from indexing request", e);
return false;
}