Сценарии запросовasticsearch с переменными - PullRequest
0 голосов
/ 13 марта 2019

Мне нужно обновить много документов, уже вставленных наasticsearch 5.4.Я думаю, что здесь отсутствует какая-то БОЛЬШАЯ концепция, потому что мне нужно что-то сделать просто, а я не могу.

Мне нужно вырезать 6 последних чисел из "req.body.client.id" и скрытьостальное (замена на х).Пример: 9494402234028493247 ---> xxxxxxxxxxxxxx493247

Я мог бы сделать это!Но проблема в том, что код такой длинный.Я хотел бы использовать переменную, и я не могу.Я не хочу ПОВТОРИТЬ поле ctx._source.req.body.client.id 4 раза.Было бы лучше, если бы я мог сделать это: clientId = ctx._source.req.body.client.id, а затем использовать clientId в оставшейся части строки сценария.Как правильно это сделать?

POST my_index/_update_by_query
{
    "query": {
        "regexp":{
            "req.body.client.id":"94944022.*"
        }
    },
    "script": {
        "lang": "painless",
        "inline": "ctx._source.req.body.client.id = 'xxxxxxxxxxx' + ctx._source.req.body.client.id.substring(ctx._source.req.body.client.id.length()-6,ctx._source.req.body.client.id.length())"
    }
 }

Вопрос в том, что касается VARIABLES и упрощения кода.

1 Ответ

0 голосов
/ 13 марта 2019

Я нашел решение.Этот язык называется безболезненным.Правильный путь:

"String clientId = ctx._source.req.body.client.id; 
int cLen = clientId.length(); 
ctx._source.req.body.client.id = "xxxxxxxxxxx" + clientId.substring(cLen-4,cLen);"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...