2017-09-04 16 views
6

Làm thế nào một truy vấn phức tạp có thể được trên một kiểu dữ liệu mảng nguyên? Đây là lớp của tôi trong python để tiêm dữ liệu vào elasticsearch:Truy vấn loại dữ liệu mảng trong elasticsearch bằng 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) 

Tôi đang tiêm một số nguyên trong ảnh chụp. Đây là dòng thú vị:

paragraph.capture = [1, 0, 5, 7] 
  1. tôi quản lý để truy vấn nếu một số có trong danh sách :: cnx = Search().using(client) s = cnx.query("match", capture=5)

  2. như @Val nói rằng chúng ta có thể thêm một lĩnh vực có chứa tổng để truy vấn số tiền

Cách truy vấn chỉ mục cụ thể, ví dụ: paragraph.capture[1] >= 1?

chúng tôi thấy rằng Elasticsearch query on array index có liên quan nhưng tôi không thể tạo liên kết.

Trả lời

1

Cách tốt nhất để truy vấn tổng là thêm trường khác chứa trường đó để bạn không phải chạy truy vấn script tốn kém tại thời điểm tìm kiếm.

Truy vấn nếu ít nhất một số vượt trội hơn 4 có thể đã được thực hiện bằng truy vấn thông thường range trên trường capture.

Các vấn đề liên quan