kornfridge
kornfridge

Reputation: 5202

How do I make a field have varying type in Elastic Search

I need a field, here score, to be a number, and other times a string. Like:

{
  "name": "Joe"
  "score": 32.5
}

{
  "name": "Sue"
  "score": "NOT_AVAILABLE"
}

How can I express this in this in the index settings in Elastic Search?

I basically want "dynamic typing" on the field. The code may not make sense to you (like: why not split it into 2 different fields), but it's necessary to be this way on my end (for consistency reasons).

I don't need/want the property to be indexed/"searchable" btw. I just need the data to be in the json response. I need something like "any object will fit here".

Upvotes: 0

Views: 73

Answers (2)

kornfridge
kornfridge

Reputation: 5202

Finally figured it out. All I had to do was to set enabled to false, and elastic search will not attempt to do anything with the data - but it's still present in the json response.

Like so:

    "score": {
      "enabled": false
    }

Upvotes: 3

bittusarkar
bittusarkar

Reputation: 6357

Just define "score" field to be of type "string" in your mapping. That's it. Make sure you do define the mapping before indexing any document though. Otherwise if you let the mapping be created dynamically and the type of value of "score" field is anything but string in the first document you index, you won't be able to index any document next in which "score" holds a string.

Upvotes: 0

Related Questions