Scala クライアント elastic4s を使用して、ElasticSearch へのインデックス作成を開始したいクラスがあります。ドキュメントを挿入できるように DocumentMap を拡張しました。String、Int などの単純な値は機能していますが、別のクラスのリストを取得して正しくマップできないようです。
ドキュメントは次のようになります。
case class AThing(UserName: String, Comment: String, Time: String)
extends DocumentMap {
override def map: Map[String, Any] = Map(
"UserName" -> UserName,
"Comment" -> Comment,
"Time" -> Time
)
}
case class ThingsThatHappened(Id: String, Things: Seq[AThing] = Nil)
extends DocumentMap {
override def map: Map[String, Any] = Map(
"Id" -> Id,
"Things" -> Things
)
}
それはelasticsearch内でIdフィールドを適切にマップしますが、ドキュメントがelasticsearchに挿入されると、これに似た誤った値を取得します:
List(AThing(id_for_the_thing,user_name_a,typed_in_comment,2015-03-12))
明らかにこれは間違っており、elasticsearch に挿入されると、次のような JSON 構造に似たものが期待されます。
"events" : [
{
"UserName" :"user_name_a",
"Comment": "typed_in_comment",
"Time": "2015-03-12"
}
]
Elastic4sを使用してデータにインデックスを付けるときに、複雑な型の配列をマップする方法を知っている人はいますか?