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" не позволяет оценивать несколько результатов.

Более подробное объяснение проблемы приведено здесь

Другие вопросы по тегам