Вы можете использовать приведенный ниже запрос.Вы можете проверить часть script
как то, что вам нужно, было реализовано.
POST <your_index_name>/_search
{
"query": {
"function_score": {
"score_mode": "sum",
"query": {
"match_all": {}
},
"functions": [
{
"script_score": {
"script": {
"source": """
boolean allValues = false;
for(int i=0; i<params.value.size(); i++){
if(doc['id'].value.contains(params.value.get(i))){
allValues = true;
}else{
allValues = false;
break;
}
}
if(allValues){
return Math.pow(3,3)
} else {
return 0;
}
""",
"params":{
"value": ["123","456"]
}
}
}
}
]
}
}
}
Что делает запрос, он проверяет, присутствуют ли все значения, присутствующие в параметрах, например, 123 & 456
присутствует в поле id
, если это так, он будет идти вперед и вычислять оценкусоответственно.
Не то, чтобы поле id
было keyword
, когда я тестировал запрос на моем конце.
Вы можете использовать запрос соответствующим образом в своем php-скрипте.Дайте мне знать, если это поможет!