ES6.0: multiple types, indexes, relationships puzzle

The challenge is, of course, in the relationships.

I agree. This is a challenge with a tool which is not a relational database.

To find the "best" way IMHO to do what you want to do in a efficient way (at search time), you need to ask yourself some questions:

  • What my users are going to search for? Places? Events? Vouchers? News?
  • What properties are needed for users to search such objects?

Let say you want to be able to search for Events and News.
And that you want to be able to search for those per country or per shop name or per location of the place. Then index documents like this:

PUT event/doc/1
{
  "text": "This is my event 1",
  "place": {
    "country": "France",
    "shop": "My lovely shop",
    "location": {
      "lat": 49.0422777,
      "lon": 2.0290053
    } 
  }
}
PUT news/doc/1
{
  "text": "This is my fantastic news",
  "place": {
    "country": "France",
    "shop": "My lovely shop",
    "location": {
      "lat": 49.0422777,
      "lon": 2.0290053
    } 
  }
}

Would such a model work for you?