У меня есть следующая структура объектов в ElasticSearch:
{
_id: 1,
myObj: {
myCol: [{id: 1, name:"1"}, {id: 2, name:"2"}, {id: 3, name:"3"}]
}
},
{
_id: 2,
myObj: {
myCol: [{id: 2, name:"2"}, {id: 3, name:"3"}, {id: 4, name:"4"}]
}
},
Я использую библиотеку С# NEST для создания запросов. Я хочу найти набор объектов myCol, используя набор идентификаторов.
Пример #1: Поисковый запрос: идентификаторы [2, 3] Результат: Возвращаются оба объекта
Пример #2: Поисковый запрос: идентификатор: [1] Результат: Возвращается первый объект
Пример №3: Поисковый запрос: идентификатор: [1, 2, 3, 4] Результат: Объекты не возвращаются
То, что я пытаюсь сделать, это запрос «Содержит все».
Пожалуйста, обрати внимание:
- Тип C# NEST MultiMatchQuery не поддерживает целочисленные массивы (только строки. Так плохо). Поэтому, пожалуйста, не предлагайте мне использовать этот тип запроса
- Я использую синтаксис запроса Object Initializer
- Достаточно правильного запроса в синтаксисе ElasticSearch.
Must
дляmyObj.myCol.id
— коллекции в lucene сглажены, поэтому на самом деле у вас есть фактически дублирующиеся ключи, такие какmyObj.myCol.id = 1 && myObj.myCol.id = 2 ...
- person Ant P   schedule 29.09.2016