Я использую эластичный поиск 5.6.1, и я пытаюсь отсортировать продукты по последовательности продуктов, в которой существует категория продуктов (продукт принадлежит категории)
В запросе я использую nested_filter
для вложенного свойства customerCategory
. На основе запроса только продукты, для которых customerCategory.customerCategoryId
установлено на 2e3738cc4d984053b1b0a9ba00273698
, должны быть отсортированы по ключу customerGroupProductSequence.4280233F-62F1-4EBC-9DF0-F7132B51CA5E
(этот ключ имеет значение типа long для сортировки).
Результат запроса не тот, который я ожидал, так как он по-прежнему возвращает товары из всех категорий. Может кто-нибудь подсказать, что я делаю не так? Спасибо
Мой запрос
{
"sort":[
{
"customerGroupProductSequence.4280233F-62F1-4EBC-9DF0-F7132B51CA5E":{
"order":"asc",
"nested_path": "customerCategory",
"nested_filter": {
"term": {
"customerCategory.customerCategoryId": "2e3738cc4d984053b1b0a9ba00273698"
}
}
}
}
],
"query":{
"match_all": {}
}
}
Отображение:
{
"mappings":{
"product":{
"properties":{
"customerCategory":{
"type":"nested",
"properties":{
"customerCategoryId":{
"type":"text"
}
}
},
"customerGroupProductSequence":{
"properties":{
"4280233F-62F1-4EBC-9DF0-F7132B51CA5E":{
"type":"long"
},
"4723A2A5-FA73-4DBF-8399-54A02AA621DA":{
"type":"long"
},
"63602693-2F57-4E79-AEFB-89FAD17EC09D":{
"type":"long"
},
"comparer":{
"type":"object"
},
"count":{
"type":"integer"
},
"item":{
"type":"integer"
},
"keys":{
"properties":{
"count":{
"type":"integer"
}
}
},
"values":{
"properties":{
"count":{
"type":"integer"
}
}
}
}
}
}
}
}
}
Пример данных
{
"customerGroupProductSequence":{
"4280233F-62F1-4EBC-9DF0-F7132B51CA5E":1
},
"customerCategory":[
{
"customerCategoryId":"276b2cd00ce64666a3b25a543b38d3a4"
},
{
"customerCategoryId":"2e3738cc4d984053b1b0a9ba00273698"
}
]
},
{
"customerGroupProductSequence":{
"4280233F-62F1-4EBC-9DF0-F7132B51CA5E":2
},
"customerCategory":[
{
"customerCategoryId":"276b2cd00ce64666a3b25a543b38d3a4"
},
{
"customerCategoryId":"00000000000000000000000000000000"
},
]
}