Я понятия не имею об упругом поиске. Однако требования кажутся ясными:
Первый фильтр, элементы которого имеют цвет colors_to_filter
. Затем снова отфильтруйте результаты по цветам и в colors
. Только вещи, которые переживают обе фильтрации, находятся в конечном результате.
Оптимизация будет заключаться в сокращении этих двух списков до одного со всеми цветами, которые есть в обоих (которые будут "красными" и "черными") , Затем используйте этот массив амальгмы в качестве фильтра. Я не уверен, к какому типу присоединения это было снова.
Я догадываюсь elastisearch должен делать эту оптимизацию автоматически, и это пример, чтобы показать это вам? Точный порядок или даже подготовительное объединение двух похожих фильтров для производительности? Это единственное, что я могу назвать «elasti c» при любом поиске / фильтрации.