我试图使用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
}
我有两个问题
1.我应该在索引之前将属性注释映射为嵌套吗?因为现在所有列表都被索引为单个字符串。
2.如何索引帖子对象列表?现在我只能索引单个对象。
溶液
1.第一个也是非常重要的一个包装索引之前的映射。
2.使用那样的批量索引。
val ops = for (j <- jsonValue) yield index into "posts/test" doc j.as[Post]
client.bulk(ops: _*)
感谢 三木
答案 0 :(得分:0)
您可以创建映射并将注释字段设置为嵌套的类型。然后,所有评论字段都将被正确编入索引。默认情况下,它应该使用内部类型来平整字段,这样如果注释有一个名为author的字段,则所有作者将被组合在一起。
要索引多个文档,请使用批量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"
)