Задать вопрос
ErickSkrauch
@ErickSkrauch

Как выбрать из elasticsearch элемент, у которого точно совпадает значение массива?

Предположим у модели есть список полей и одно из них - список id каких-то связанных полей:
{
    'name': 'bla-bla',
    'field1': 'value1',
    'array': [
        1, 2, 3, 4
    ]
}


Необходимо выбрать те записи, у которых значения array совпадают с переданным набором id, т.е. если я передам 1, 2, 3, или наоборот 1, 2, 3, 4, 5, то строку не найдёт, а вот если передам 3, 2, 4, 1 (т.е. порядок не решает), то строку найдёт.
  • Вопрос задан
  • 1038 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
un1t
@un1t
Не знаю подойдет ли в твоем случае, молжно засовывать в индекс дополнительное поле,
твои [1,2,3,4] преобразуем например в строку "1-2-3-4". Т.е. при индексации и запросе сортируем и джойним.
Ответ написан
Комментировать
MintTea
@MintTea
Как-то так (And filter + Term filter):

curl -XGET 'http://localhost:9200/index_name/type_name/_search?pretty' -d '{
    "filter": {
        "and": [
            {"term": {"field_name": 1}},
            {"term": {"field_name": 2}},
            {"term": {"field_name": 3}},
            {"term": {"field_name": 4}}
        ]
    }
}'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы