Dynamic ElasticSearch mapping using Elastic4s

房东的猫 提交于 2019-12-10 14:46:12

问题


I have a document that I want to index on elasticSearch, this document contains some dynamic keys that I can not know in advance, like "spanish" or "french" in the following example

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

I'm using the elastic4s DSL in order to make my mapping (Via the createIndex DSL), but I can not find how to create, with this library, a dynamic mapping based on the "match" option ( like suggested here), in order to specify a different analyzer for each language stored under the path contents.title.

Any track please ? :-)


回答1:


You can't do what you want in the elastic4s Scala API at the moment. But you can create a dynamic template in the Java API and use the Scala API for the rest of your calls.

The dynamic template can be set to use a regex and apply a mapping. But since you will really know your countries in advance (there's only ~200) why not just spend the time and make a mapping?




回答2:


This is how the elastic4s documentation says to do it : (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)
}

where StringSource extends DocumentSource If you able to marshall your input into JSON, this is the best way to do it.



来源:https://stackoverflow.com/questions/23056292/dynamic-elasticsearch-mapping-using-elastic4s

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!