我有一个文档,我想在elasticSearch上编制索引,这个文档包含一些我事先无法知道的动态密钥,比如"西班牙语"或"法语"在以下示例中
"contents": {
"title": {
"spanish": "Hola amigos",
"french" : "Bonjour les amis"
}
}
我使用elastic4s DSL进行映射(Via the createIndex DSL),但我找不到如何使用此库创建基于"匹配&的动态映射#34;选项(如建议的here),以便为路径contents.title下存储的每种语言指定不同的分析器。
有任何曲目吗? : - )
答案 0 :(得分:2)
目前,您无法在elastic4s Scala API中执行所需操作。但您可以在Java API中创建动态模板,并在其余调用中使用Scala API。
可以将动态模板设置为使用正则表达式并应用映射。但既然你事先会真正了解你的国家(只有约200个),为什么不花时间做地图呢?
答案 1 :(得分:-1)
这就是elastic4s文档所说的:(https://github.com/sksamuel/elastic4s/blob/master/guide/index.md)
val settings = ImmutableSettings.settingsBuilder().put("cluster.name","blah")
val client = ElasticClient.remote("ip.address",portNum)
client.execute {
index into "indexname/indexType" doc StringSource(jsonDoc.toString)
}
其中StringSource扩展了DocumentSource 如果您能够将输入编组为JSON,这是最好的方法。