asticsearch-py не может запросить с помощью script_score
В настоящее время я пытаюсь сделать запрос к ES через Python, используя erasearch-py, но безуспешно... Я проверяю запрос на плагин "asticsearch-head ", и он работает нормально (результаты оцениваются)
Однако, когда я делаю это в Python, что-то кажется неправильным, и хотя я получаю те же результаты, они не оцениваются должным образом...
вот код:
custom_query={
"query": {
"function_score": {
"query": {
"match_all": {}
},
"functions": [
{
"script_score": {
"lang": "groovy",
"script": "_score+20",
"params":{"myMap":{}}
}
}
]
}
}
}
Это мой пользовательский запрос, очень простой, просто для проверки механизма оценки.
src = es.search(index=['test'],scroll='60s',search_type='scan',size=10,body=custom_query)
Теперь я проверю это:
while(1):
src = es.scroll(scroll_id=sid, scroll='60s')
sid = src['_scroll_id']
kws.extend(src['hits']['hits'])
Все это дает набор результатов, которые были неправильно оценены... Я даже включил "_explanation", чтобы понять, используется ли скрипт... Это означает: - "_score" всегда равен 0 - показывает "_explanation" что-то вроде:
{
'description': 'function score',
product of:'',
'value': 21.0,
'details': [
{
'description': 'ConstantScore(*:*)',
product of:'',
'value': 1.0,
'details': [
{'description': 'boost', 'value': 1.0}, {'description': 'queryNorm', 'value': 1.0}
]
},
{
'description': 'Math.min of',
'value': 21.0,
'details': [
{
'description': 'script score function',
computed with script:"return _score+30;" and parameters: \n{myMap={}}', 'value': 21.0
},
{
'description': 'maxBoost',
'value': 3.4028235e+38
}
]
},
{
'description': 'queryBoost',
'value': 1.0
}
]
}
1 ответ
Кажется, проблема в самом ElasticSearch... "search-type": "scan" не позволяет оценивать несколько результатов.
Более подробное объяснение проблемы приведено здесь