5

我有一个要在 elasticSearch 上索引的文档,该文档包含一些我无法提前知道的动态键,例如以下示例中的“西班牙语”或“法语”

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

我正在使用 elastic4s DSL 来制作我的映射(通过 createIndex DSL),但我找不到如何使用这个库创建基于“匹配”选项的动态映射(如建议的here),在为了为存储在路径 contents.title 下的每种语言指定不同的分析器。

请问有什么音轨吗?:-)

4

2 回答 2

2

目前你不能在 elastic4s Scala API 中做你想做的事。但是您可以在 Java API 中创建一个动态模板,然后在其余调用中使用 Scala API。

动态模板可以设置为使用正则表达式并应用映射。但既然你真的会提前知道你的国家(只有大约 200 个),为什么不花时间做个地图呢?

于 2014-06-06T21:54:50.000 回答
-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,这是最好的方法。

于 2014-06-06T19:35:39.667 回答