Я использую эластичный поиск-DSL в Django. И у меня есть определенный документ DocType и ключевое слово, содержащее список значений.
Вот мой код для того же.
from elasticsearch_dsl import DocType, Text, Keyword
class ProductIndex(DocType):
"""
Index for products
"""
id = Keyword()
slug = Keyword()
name = Text()
filter_list = Keyword()
filter_list - это массив, который содержит несколько значений. Теперь у меня есть некоторые значения, например sample_filter_list, которые отличаются от значений, и некоторые из этих элементов могут присутствовать в массиве filter_list какого-то продукта. Поэтому, учитывая этот sample_filter_list, я хочу, чтобы все уникальные элементы filter_list всех продуктов, чье пересечение filter_list с sample_filter_list отличны от нуля.
for example I have 5 products whose filter_list is like :
1) ['a', 'b', 'c']
2) ['d', 'e', 'f']
3) ['g', 'h', 'i']
4) ['j', 'k', 'l']
5) ['m', 'n', 'o']
and if my sample filter_list is ['a', 'd', 'g', 'j', 'm']
then elasticsearch should return an array containg distinct element
i.e. ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o']