通过高级客户端写入Elasticsearch-在文档上设置时间戳

时间:2019-09-04 00:47:14

标签: java elasticsearch

使用high level client,我可以将KV对(作为文档)发送给Elastic。我可以使用curl来查询它们,所以我知道它们在其中。它们所缺少的等同于logstash似乎添加的“ @timestamp”值。我还没有发现此字段的语法是什么(或适当的字段是什么)。

时代? TZ?

1 个答案:

答案 0 :(得分:0)

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