Запрос типа данных Array в elasticsearch с использованием python_dsl

Насколько сложным может быть запрос к типу данных целочисленного массива? Вот мой класс на Python для ввода данных в elasticsearch:

class Paragraph(DocType):
    body = Text(analyzer="standard")
    published_from = Date()
    lines = Integer()
    n_paragraph = Integer()
    capture = Integer()

    class Meta:
        index = "my_index"

    def save(self, **kwargs):
        self.lines = len(self.body.split())
        return super(Paragraph, self).save(**kwargs)

Я ввожу массив целых чисел в захват. Вот интересная строка:

paragraph.capture = [1, 0, 5, 7]
  1. Мне удается узнать, есть ли номер в списке :: cnx = Search().using(client) s = cnx.query("match", capture=5)

  2. как @Val сказал, что мы можем добавить еще одно поле, содержащее сумму, для запроса суммы

Как запросить конкретный индекс, например. paragraph.capture[1] >= 1?

мы увидели, что запрос Elasticsearch-query-on-array-index"> связан с запросом Elasticsearch по индексу массива, но я не смог установить ссылку.


person g.lahlou    schedule 04.09.2017    source источник


Ответы (1)


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

Запрос, если хотя бы одно число превосходит 4, уже можно выполнить с помощью обычного range запроса в поле capture.

person Val    schedule 04.09.2017