Безболезненная экспоненциальная функция сценария Elasticsearch - PullRequest
0 голосов
/ 26 апреля 2018

С Elasticsearch и безболезненно, есть ли способ реализовать экспоненциальную функцию? Кажется, я ничего не могу найти. У меня есть что-то вроде этого.

bdy = {
    "from" : 0,
    "size" : 10,
    "query": {
        "function_score": {
            "query": {
                "bool": {
                    "must": must_terms
                }
            },
            "script_score": {
                "script": {
                "lang": "expression",
                "source": "doc['release_year'].value"
              }
            }
        }
    }
}

Я хочу добавить более сложную математику в поле источника, например так.

"source": "Math.exponential(1/doc['release_year'].value)"

Это возможно? Или есть другой язык сценариев, с помощью которого вы можете сделать это в рамках эластичного поиска?

ОБНОВЛЕНИЕ

На самом деле похоже, что я могу использовать.

"lang": "expression"
"source": "_score/10 + 1/(1+ exp(-(doc['release_year'].value*a)))"

http://lucene.apache.org/core/6_0_0/expressions/index.html?org/apache/lucene/expressions/js/package-summary.html

Если у кого-то есть другие варианты, это было бы здорово.

1 Ответ

0 голосов
/ 27 апреля 2018

Вы можете сделать это безболезненно так же, как Math.exp()

"source": "_score/10 + 1/(1+ Math.exp(-(doc['release_year'].value*a)))"

См. Полный API безболезненно здесь: https://www.elastic.co/guide/en/elasticsearch/painless/current/painless-api-reference.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...