Value mapping - Combine data from multiple indexes : plugin needed?

Hello,

I'm working on an app which is based on ES. We are using version 2.3 now.

In my app, I need to support multi-language. I know that the "classic" way to do that with ES will be to store the localized labels directly on each entry but here I would not want to store the multi-languages label on each entry.
I will have a large amount of items in my base and those labels can be updated often so I would like to avoid updating all the entries every time there is a change in a label.

Here is what I would like to do :

In my ES repository, I have items, in the items index which are defined like this
{"item_name" : "Item #1", "item_code": "code1", "item_ref": "ref1"},
{"item_name" : "Item #2", "item_code": "code2", "item_ref": "ref2"},
{"item_name" : "Item #3", "item_code": "code3", "item_ref": "ref3"}

I have another index, data_values which is defined like this :
{"name" : "code", "key": "code1", "en": "One", fr:"Un", "es":"Uno"},
{"name" : "code", "key": "code2", "en": "Two", fr:"Deux", "es":"Dos"},
{"name" : "code", "key": "code3", "en": "Three", fr:"Trois", "es":"Tres"}

When I retrieve my items, I would like to have some kind of value mapping between my item properties and the data values. This way, I will be able to retrieve directly the labels to display them but also to sort my items based on their label (not on the value).

My idea is to develop a plugin with a custom action "_localized_search" that will retrieve the _search results and apply the mapping on it.
Do you guys think this is a good approach ? Is there a simpler way to achieve this ?

I'm starting to work on the ES plugin framework so any help will be welcomed.

Thank you.

Does anyone have an input on this topic ? I'm starting to wondering if that's the good approach.