У меня есть индекс с именем «сотрудники» со следующей структурой:
{
id: integer,
name: text,
age: integer,
cityId: integer,
resumeText: text <--------- parsed resume text
}
Я хочу выполнить поиск сотрудников по определенным критериям, например, возраст> 40, resumeText содержит специфику c навыка или сотрудник принадлежит к в определенном городе и c, и у вас есть следующий запрос для текущего требования:
{
query:{
bool:{
should:[
{
term:{
cityId:2990
},
{
match:{
resumeText:"marketing"
},
{
match:{
resumeText:"critical thinking"
}}}
],
filter:{
range:{
age:{
gte:40
}}}}}
}
Это дает мне ожидаемые результаты, но я также хочу знать среди возвращенных документов / сотрудников, которые являются теми, чье резюмеText содержит упомянутые навыки. например, в ответе я хочу получить документы, в которых упоминается, что этот документ соответствует «критическому мышлению», этот сотрудник соответствует обоим навыкам, а этот сотрудник не соответствует ни одному навыку (поскольку он был возвращен на основе других фильтров)
Какие изменения мне нужно сделать, чтобы получить желаемые результаты:
- может помочь агрегация?
- можем ли мы выполнить сценарий для КАЖДОГО отфильтрованного документа, чтобы вычислить желаемый результат ( подзапрос для каждого документа)?
- любой другой подход?