15

エポック (別名 UNIX タイムスタンプ) からの秒数を表す整数値の「時間」フィールドを含むドキュメントをインデックス化する必要があります。

私はESドキュメントを読んでいて、これを見つけました:

http://www.elasticsearch.org/guide/reference/mapping/date-format.html

しかし、UNIXタイムスタンプを送信し、それらを「日付」フィールドに保存したい場合(整数フィールドは役に立たない)、2つのオプションしかないようです。

  • 独自の日付形式を実装する
  • 送信側でサポートされている形式に変換する

私が逃した他のオプションはありますか?

ありがとう!

4

2 に答える 2

20

フィールドが日付であることを ES に伝えるマッピングを指定すると、エポック ミリ秒を入力として使用できます。ES で自動検出する場合は、ISO8601 またはその他の検出可能な形式を提供する必要があります。

更新: また、ES がマッピングで日付として認識する文字列に影響を与えることができることにも注意してください。http://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html

于 2012-05-23T16:54:28.677 に答える
5

私が期待する Kibana を使用し、ログ/エントリの時間に従って視覚化する場合は、少なくとも 1 つのフィールドが日付フィールドである必要があります。

/index/type にデータを入力する前に、フィールドを日付タイプとして設定する必要があることに注意してください。それ以外の場合は、長く変更できないものとして保存されます。

marvel/senseプラグインに貼り付けることができる簡単な例:

# Make sure the index isn't there
DELETE /logger

# Create the index
PUT /logger

# Add the mapping of properties to the document type `mem`
PUT /logger/_mapping/mem
{
  "mem": {
    "properties": {
      "timestamp": {
        "type": "date"
      },
      "free": {
         "type": "long"
      }
    }
  }
}

# Inspect the newly created mapping
GET /logger/_mapping/mem

これらの各コマンドを順番に実行します。

空きメモリ ログを生成する

以下は、ターミナルにエコーし、ローカルの Elasticsearch にログを記録する簡単なスクリプトです。

while (( 1==1 )); do memfree=`free -b|tail -n 1|tr -s ' ' ' '|cut -d ' ' -f4`; echo $load; curl -XPOST "localhost:9200/logger/mem" -d "{ \"timestamp\": `date +%s%3N`, \"free\": $memfree }"; sleep 1; done

エラスティック検索でデータを検査する

これをあなたの驚異/感覚に貼り付けてください

GET /logger/mem/_search

これで、Kibana に移動してグラフを作成できます。Kibana は日付フィールドを自動検出します。

于 2015-10-16T08:05:53.620 に答える