2015-06-28 4 views
0

Я использую следующий код для частичного обновленияЧастичное обновление документа без сценария Elasticsearch

POST /website/blog/1/_update 
{ 
    "script" : "ctx._source.views+=1" 
} 

есть ли альтернативный способ, которым я могу достичь того же. потому что я не хочу ничего менять в groovy script, потому что в прошлый раз я изменил настройки, и мой сервер был скомпрометирован.

Так что, пожалуйста, помогите мне с решением или некоторыми мерами безопасности, если нет работы.

ответ

2

Нет, вы не можете динамически изменять значение поля без использования сценария.

You can use file-based scripts, хотя это означает, что вы можете отключить динамические сценарии (по умолчанию в ES 1.4.3+), сохраняя при этом безопасный и надежный сценарий.

config/ 
    elasticsearch.yml 
    logging.yml 
    scripts/ 
    your_custom_script.groovy 

Вы мог бы магазин сценария:

ctx._source.views += your_param 

После сохранения, вы можете получить доступ сценария по имени, который обходит динамические сценарии.

POST /website/blog/1/_update 
{ 
    "script": "your_custom_script", 
    "params" : { 
    "your_param" : 1 
    } 
} 

В зависимости от версии Elasticsearch, параметр script лучше по имени (например, ES 2.0 использует «встроенный» для динамических скриптов), но это должно вас от земли.

Смежные вопросы