使用Elastic4s进行动态ElasticSearch映射

时间:2014-04-14 09:16:00

标签: scala elasticsearch elastic4s

我有一个文档,我想在elasticSearch上编制索引,这个文档包含一些我事先无法知道的动态密钥,比如"西班牙语"或"法语"在以下示例中

"contents": {
    "title": {
        "spanish": "Hola amigos",
        "french" : "Bonjour les amis"
    }
}

我使用elastic4s DSL进行映射(Via the createIndex DSL),但我找不到如何使用此库创建基于"匹配&的动态映射#34;选项(如建议的here),以便为路径contents.title下存储的每种语言指定不同的分析器。

有任何曲目吗? : - )

2 个答案:

答案 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,这是最好的方法。