Если ваши данные уже проиндексированы, как показано (это означает: каждый документ имеет поля Имя, Год и Механизм), то правильный запрос вернет вам список документов этого типа.
Пример такого запроса приведен ниже (доступны дополнительные параметры - дополнительную информацию о запросе dsl см. здесь - http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl.html).
"query": {
"bool": {
"must": [
{"match": { "Name": "C30" }},
{"match": { "Gear": "A" }}
]
}
}
Если вы хотите, чтобы результат был таким, как вы описываете, вам следует применить некоторую постобработку ваших данных после того, как они будут получены из результатов поиска.
Однако, если ваши данные еще не проиндексированы или вы не хотите менять свою политику, я бы предложил денормализовать ваши данные и проиндексировать их в форме, которая вам больше всего подходит. Я предлагаю индексировать документ, подобный приведенному ниже:
public class ObjectToIndex{
public string Name;
public string Gear;
public List<string> Years;
}
Теперь ваши данные будут выглядеть
Name | Gear | Years
C30 A 2012,2015,2013
C30 M 2011,2014
V40 A 2012,2015
V40 M 2013
S60 A 2011
S60 M 2012
В этом случае запрос, подобный приведенному выше, вернет вам документ, например:
C30, A, 2012,2015,2013
person
Manolis
schedule
10.02.2015