2

elasticR パッケージを調べて、データ フレームを ElasticSearch に書き込みます。関数を使用していdocs_bulkます。

私のデータフレームの列の 1 つは、フォーマットされている@timestampPOSIXctです。しかし、フィールドはElastic Searchに文字列として保存されています。列を時間形式で保存する方法についてのアイデア。

また、適切なデータ型定義を使用してインデックス マッピングを手動で作成しようとしましたが、うまくいきませんでした。

提案してください。

バージョン:

R: 3.3.1

エラスティック検索 - 2.4.1

OS - レッドハット

4

1 に答える 1

3

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")
于 2016-11-09T17:14:20.483 に答える