Я использую SearchKit (http://www.searchkit.co/) для создания поисковой системы Elasticsearch с граненым поиском.
Давайте рассмотрим эти данные в Elasticsearch:
{
"name" : "Zach",
"car" : [
{
"make" : "Saturn",
"model" : "SL"
},
{
"make" : "Subaru",
"model" : "Imprezza"
}
]
}
{
"name" : "Bob",
"car" : [
{
"make" : "Saturn",
"model" : "Imprezza"
}
]
}
, где car - это вложенный объект, а "make" / "model" - неиндексированные ключевые слова.
Я установил два компонента MenuFilter в Searchkit,
как для марки, так и для модели, например:
<MenuFilter id="make" listComponent={Select} title="make"
field="car.make" fieldOptions={{"type":"nested", options:
{"path":"car"}}} orderKey="_term" />
и
<MenuFilter id="model" listComponent={Select} title="model"
field="car.model" fieldOptions={{"type":"nested", options:
{"path":"car"}}} orderKey="_term" />
Фильтры работают хорошо, но они не взаимодействуют друг с другом, я хотел бы добиться динамической связи между двумя аспектами, где, если выбрано "make", я получаю только модели, связанные с этим "make".
Я вижу, что у компонента Menu есть реквизиты "include" и "bucketsTransform",
но я не уверен, как установить в поле модели уже отфильтрованные результаты выбора make.
Примечание: я могу легко это сделать с помощью компонента Hierarchial Menu, но я не хочу, чтобы этот компонент отображался как дерево категорий, и я хотел бы иметь два отдельных поля выбора для выполнения пошагового выполнения. step make => поиск модели.