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