2016-11-09 6 views
0

elastic Rパッケージを使ってElasticSearchにデータフレームを書き込んでいます。 私はdocs_bulk機能を使用しています。@timestampでElastic Searchにデータフレームを書き込む

@timestampPOSIXctの形式です。 しかし、フィールドはElastic Searchで文字列として保存されています。 カラムを時間フォーマットで保存するにはどうすればいいですか?

また、適切なデータ型定義を持つインデックスマッピングを手動で作成しましたが、機能しませんでした。

お勧めします。

バージョン:

R:3.3.1

弾性検索 - 2.4.1

OS - RedHatの

答えて

1

elasticあなたの入力からデータ型をキャプチャしようとしません。 data.frameまたはlistをdocs_bulk()にする - 私たちはそれをやろうと思うかもしれませんが、Rのデータ型がElasticsearch型に正確にはマッピングされないと思います。マップデータ型。ここで私はそれを行うだろう方法は次のとおりです。

library('elastic') 
connect() 

ダミーdata.frame

df <- data.frame(
    date = as.POSIXct(seq(from = as.Date("2016-10-01"), 
         to = as.Date("2016-10-31"), by = 'day')), 
    num = 1:31 
) 

いずれかのリストまたはJSON文字列

mapping <- list(
    world = list(properties = list(
    date = list(
     type = "date", 
     format = "yyyy-mm-dd HH:mm:ss" 
    ), 
    num = list(type = "long") 
))) 

として作成し、インデックス

をマッピングを作成します。
index_create(index = "hello") 

インデックスにマッピングを作成する

mapping_create(index = "hello", type = "world", body = mapping) 

マッピング

mapping_get("hello") 
#> $hello 
#> $hello$mappings 
#> $hello$mappings$world 
#> $hello$mappings$world$properties 
#> $hello$mappings$world$properties$date 
#> $hello$mappings$world$properties$date$type 
#> [1] "date" 
#> 
#> $hello$mappings$world$properties$date$format 
#> [1] "yyyy-mm-dd HH:mm:ss" 
#> 
#> 
#> $hello$mappings$world$properties$num 
#> $hello$mappings$world$properties$num$type 
#> [1] "long" 

バルクロードdata.frameインデックスに

docs_bulk(df, index = "hello", type = "world") 

検索

Search("hello") 
+0

感謝を取得し、それは私を助けました。形式では、月はMMでなければなりません – Sonny

関連する問題