Python ElasticSearch dsl: как мне представить поле, которое будет отображаться из строки в список целых? - PullRequest
0 голосов
/ 03 февраля 2019

Структура документа, который я хочу вставить, выглядит следующим образом:


post = {
          "day_1_scores": [1,2,3], 
          "day_2_scores":[4,5,6]
}

Мне известно, что elasticsearch_dsl имеет несколько пользовательских типов данных, таких как Document, Integer, но я 'я не уверен, как сделать карту, которая отображает из string в список ints

Например, если я хочу создать сообщение с атрибутом string с именем content, я'go:


class Post(Document):
    content = Text(analyzer='snowball', fields={'raw': Keyword()})

    def save(self, **kwargs):
        print("saving post")
        super(Post, self).save(**kwargs)


    class Index:
        name = 'blog'
        doc_type = "post"

Когда мне нужно вставить его в БД, я бы вызвал метод save.

Но я хочу, чтобы этот пост имел другой атрибут: карта, отображающая из string в список ints

1 Ответ

0 голосов
/ 03 февраля 2019

Вasticsearch нет специального отображения для списков.Если поле документа содержит список значений, тогда этот тип поля является типом элемента в списке.

Если вы индексируете поле со значениями чисел, аasticsearch рассматривает его как строку, то этоЗначения полей заключены в кавычки.Если вы не можете контролировать код, который добавил кавычки, вы можете: 1. Добавить отображение в индекс, указав, что поле является числом.ИЛИ 2. Добавьте «numeric_detection» в отображение индекса.

Обе опции будут делать то, что вы ищете - рассматривайте это конкретное поле как число (даже если это массив)

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