マッピングのdate型について


(GentaYamasaki) #1

下記のようなJSONファイル(取込みデータ)をelasticsearchに取込む場合、
access_dayと、access_timeをそれぞれ日付と時間で認識させたかったため、
mappingシートには、
"access_day" : { "type": "date" ,"format": "yyyyMMdd" },
"access_time" : { "type": "date" ,"format": "HHmmss" },
のように記述しました。ところが、登録されたデータをみると、id=2だと、
access_day⇒May 18th 2017, 09:00:00.000
access_time⇒January 2nd 1970, 00:15:15.000
のようになってしまいます。access_dayは余計な時間が足されている。
access_timeは想定外のデータが登録されていました。(11時11分11秒をとして、111111と登録されるとおもいました。)
formatの設定が不正なのでしょうか?

JSON FILE////////////////////////////////////////////////////////////////////////
{"index":{"_id":"1"}}
{"system_id":"FHC-LIF","access_day":"20170518","access_time":"101010","user_id":"b5068","out":"0","out_count":"0"}
{"index":{"_id":"2"}}
{"system_id":"FHC-LIF","access_day":"20170518","access_time":"111111","user_id":"b5068","out":"1","out_count":"100000"}
{"index":{"_id":"3"}}
{"system_id":"FHC","access_day":"20170518","access_time":"121212","user_id":"g5068","out":"0","out_count":"0"}
・・・
////////////////////////////////////////////////////////////////////////

初歩的な質問かもしれませんが、ご教授ください。


(Jun Ohtani) #2

Elasticsearchはdate型の場合、内部でTimestampで保持しています。
ですので、時分秒だけのデータについては1970年1月1日のデータとなります。
また、タイムゾーンの関係もあるため、9時間ずれている形となります。

わけて持つ理由は何かありますか?
dayとtimeのフィールドを結合してdateで保持してはどうでしょうか?


(GentaYamasaki) #3

あるシステムへのユーザーのアクセス数を時間帯で分析したいです。
データとして、日付はもっていてよいのですが、時間のデータを切り出
したいです。
たとえば、7:00~12:00までのアクセス数の変移を分析するとかです。


(tsgkdt) #4

ある時間帯で、ということであればdate型で持たず、その部分は数値型で持てばよいのではないでしょうか。

11時11分11秒の例がありましたが、111111と数値で持てば
11時台のデータとして検索したければ [110000 TO 115959] と表現できるかと思います。


(GentaYamasaki) #5

そうですね。時間帯で管理するのであればhhだけを数値型でもてばよいですね。
ありがとうございます、助かります。


(system) #6

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.