5

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 ? :-)

2 Answers 2

2

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?

Sign up to request clarification or add additional context in comments.

2 Comments

dynamicTemplates(template name "NotAnalyzed" 'match' "*" matchMappingType "string" mapping("type" typed StringType index NotAnalyzed)) leads to StackOveflow at MappingDefinition.scala:141 any idea what is wrong?
this is correct templates(Seq(template name "NotAnalyzed" 'match' "*" matchMappingType "string" mapping("type" typed StringType index NotAnalyzed)):_*) anything else you pass in there : Iterable or single instance fails on StackOverFlow
-1

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.

3 Comments

The OP is asking about mappings not indexing.
As identified correctly, this response is for indexing document not so much addressing the issue of using templates for mapping to resolve the problem. The intent was however that when new fields are they would get created. However I had missed the custom analyzer depending on field name bit. Thanks @ColeStanfield for pointing that out.
No problem but if you want to edit your answer to better align with the question, I'll be happy to put the point back up.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.