2017-09-04 27 views
6

Jak złożone może być zapytanie na typie danych w postaci liczb całkowitych? Oto moja klasa w Pythonie wstrzyknąć dane do elasticsearch:Typ danych zapytania typu Array w analizie elastycznej za pomocą python_dsl

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) 

ja wstrzykiwanie tablicę liczb całkowitych w zdobyciu. Oto interesująca linia:

paragraph.capture = [1, 0, 5, 7] 
  1. udaje mi się zapytać, czy numer jest na liście :: cnx = Search().using(client) s = cnx.query("match", capture=5)

  2. jak @Val powiedział możemy dodać kolejne pole, które zawiera sumę do zapytania suma:

Jak zapytać o konkretny indeks np. paragraph.capture[1] >= 1?

Widzieliśmy, że Elasticsearch query on array index jest powiązany, ale nie mogłem utworzyć linku.

Odpowiedz

1

Najlepszym sposobem na zapytanie o sumę jest dodanie innego pola, które je zawiera, aby nie trzeba było wykonywać kosztownego zapytania w czasie wyszukiwania.

Zapytanie, czy przynajmniej jedna liczba jest lepsza od 4, można już wykonać za pomocą normalnego zapytania range w polu capture.