Использование сценариев (без изменения сопоставления)
Никаких изменений сопоставления для того, что у вас уже есть, не требуется.
Я придумал следующий скрипт.Я полагаю, что основная логика в сценарии, который я думаю, самоочевиден.
POST test_index_arr/_search
{
"query":{
"bool": {
"filter": {
"script": {
"script": {
"source" : """
List myList = doc['arr.name'];
int tempVal = myList.size();
for(int i=0; i<params.ids.size(); i++){
long temp = params.ids.get(i);
if(myList.contains(temp))
{
tempVal = tempVal - 1;
}
if(tempVal==0){
break;
}
}
if(tempVal==0)
return true;
else
return false;
""",
"lang" : "painless",
"params": {
"ids": [1,2,4]
}
}
}
}
}
}
}
Итак, что делает сценарий, он проверяет, есть ли у документа все его номера в его arr
, присутствующем во входных данных, и если это так, он возвращает документ.
В приведенном выше запросе часть "ids": [1,2,4]
действует как ввод.Вам необходимо добавить / удалить / обновить значения здесь, в зависимости от ваших требований.
Надеюсь, это поможет!