Подтвердить что ты не робот

Динамический сценарий Elasticsearch отключен

Я пытаюсь выполнить следующий запрос об агрегировании:

aggs:{
    total:{
        sum:{
            script: "doc['comments'].value + doc['likes'].value + doc['shares'].value"
        }   
    }
}

и это вызывает следующее исключение:

ScriptException[dynamic scripting disabled]

Любая идея, как я могу это исправить. См:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-sum-aggregation.html

4b9b3361

Ответ 1

По умолчанию динамический скриптинг отключен в elasticsearch, нам нужно добавить следующую строку в файл elasticsearch.yml:

script.disable_dynamic: false

Refer: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.5/modules-scripting.html#_enabling_dynamic_scripting

Также нам нужно убедиться, что когда мы включаем динамические скрипты, порты elasticsearch не являются общедоступными. особенно порт, используемый узлами для связи. (По умолчанию 9300) В противном случае он имеет уязвимость системы безопасности и позволяет злоумышленникам присоединяться к кластеру, выполнять сканирование портов или делать атаки DDOS.

UPDATE

Для ES версии 1.6 +

Можно включить сценарии на основе их источника для каждого механизма script с помощью следующих параметров, которые необходимо добавить в файл config/elasticsearch.yml на каждом node.

script.inline: on
script.indexed: on

Обратитесь: https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html#enable-dynamic-scripting