使用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;
    }

07-26 02:20