0

DocumentMap を使用して一括インデックスを作成しようとしています。私はそのようなクラスをマッピングします

 case class Comment(id: String, fromId: String, fromName: String, message: String,     creationTime: String, likeCount: Int =0)
  extends DocumentMap {
  def map = Map("id" -> id, "fromId" -> fromId, "fromName" -> fromName, "message" ->   message, "createdTime" -> creationTime, "likeCont" -> likeCount)
 }

 case class Post(id: String, fromId: String, fromName: String, message: String, fullUrl:   String, createdTime: String, updateTime: String, likeCont: Int= 0, comments: List[Comment] = Nil)
     extends DocumentMap {
    def map = Map("id" -> id, "fromId" -> fromId, "fromName" -> fromName, "message" -> message, "fullUrl" -> fullUrl, "createdTime" -> createdTime, "updateTime" -> updateTime,   "likeCount" -> likeCont,
     "comments" -> comments)
  }

そして、これは私がデータにインデックスを付ける方法です(現在、単一のアイテムにのみインデックスを付けることができます)、

    val test   =jsonValue(0).as[Post]


  client.execute {
    index into "posts/test"  doc  test
  }

2つの質問があります

1.インデックスを作成する前に、プロパティのコメントをネストされたものとしてマップする必要がありますか?? すべてのリストが単一の文字列としてインデックス化されるためです。

2.投稿オブジェクトのリストにどのようにインデックスを付けることができますか?? 現在、単一のオブジェクトにのみインデックスを付けることができます。

解決

1.最初の非常に重要なことは、インデックスを作成する前にマッピングをクレートすることです。

2.そのような一括インデックスを使用します。

val ops = for (j <- jsonValue) yield index into "posts/test" doc j.as[Post] 

client.bulk(ops: _*)

ありがとうミキ

4

1 に答える 1

0

マッピングを作成し、コメント フィールドを入れ子として入力するように設定できます。その後、すべてのコメント フィールドが適切にインデックス化されます。デフォルトでは、フィールドを平坦化する内部型を使用する必要があるため、コメントに作成者というフィールドがある場合、すべての作成者がグループ化されます。

複数のドキュメントをインデックスに登録するには、bulk API を使用します。テストから:

client bulk( index into "transport/air" id 1 fields "company" -> "ba", index into "transport/air" id 2 fields "company" -> "aeroflot", index into "transport/air" id 3 fields "company" -> "american air", index into "transport/air" id 4 fields "company" -> "egypt air" )

于 2014-05-04T21:14:28.600 に答える