Эластичный поиск: Как обновить карту безболезненно? - PullRequest
0 голосов
/ 03 февраля 2019

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

class Post:
    DOC_TYPE = "post"

    def __init__(self, name):
        self.name = name
        self.score_at = {}
        self.id = int(hashlib.sha1(name.encode("utf-8")).hexdigest(), 16) % (10 ** 8)

Мой score - это dict, который отображается от string до list из ints

Я хочу в основном смоделировать поведение defaultdict(list)

Я ищу несколько примеров того, как это сделать с помощью скрипта painless (language), в контексте обновления этого поста в эластичномпоиск.

В частности:

(1) Как я могу изменить его с {}, скажем, на {"week1":[1,2] }

(2) Как я могу изменить его с {"week1": [1,2]} to {week1":[1,2,3]}

Мой код Python, в конце концов, будет выглядеть следующим образом

update_dict = {
                "script": {
                    "source": """"
                  // the code to update score_at
                    """
                    ,
                    "lang": "painless",

                }
            }

client.update(id=post_id, body=update_dict)

Я бы хотел несколько указателей в правильном направлении.Я посмотрел на документы API для painless, но мне не ясно, как связать все эти компоненты вместе.

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