Я получаю ошибку в этом упругом поиске по терминам.Сообщение об ошибке:
"[parsing_exception] [термины] неизвестный токен [START_ARRAY] после [activeIds], с {line = 1 & col = 63}"
Active Ids - это массивуникальные идентификаторы.Это выглядит как
const activeIds = [ '157621a1-d892-4f4b-80ca-14feddb837a0',
'd04c5c93-a22c-48c3-a3b0-c79a61bdd923',
'296d40d9-f316-4560-bbc9-001d6f46858b',
'2f8c6c37-588d-4d24-9e69-34b6dd7366c2',
'ba0508dd-0e76-4be8-8b6e-9e938ab4abed',
'ab076ed9-1dd5-4987-8842-15f1b995bc0d',
'ea6b0cff-a64f-4ce3-844e-b36d9f161e6f' ]
let items = await es.search({
"index": table,
"body": {
"from": 0, "size": 25,
"query": {
"terms" : {
"growerId" : {
activeIds
}
},
"bool": {
"must_not": [
{ "match":
{
"active": false
}
},
],
"must": [
{ "query_string" :
{
"query": searchQuery,
"fields": ["item_name"]
}
}
],
}
}
}
})
Оцените помощь!
Редактировать: Отвечая на этот вопрос: «Каков ожидаемый результат? Можете ли вы разработать и поделиться некоторыми образцами данных? - Нишант Саини 15 часовago "
Я попытаюсь немного уточнить.
1) В целом я пытаюсь получить элементы, которые принадлежат активным пользователям.Есть 2 таблицы: user
и items
.Поэтому я изначально запускаю ES, который возвращает всех пользователей, которые содержат { active: true }
из таблицы user
2) Запуск этого ES возвращает массив идентификаторов, которые я называю activeIds
.Массив выглядит так, как я уже показал в моем примере.Так что пока это работает (дайте мне знать, если вы хотите увидеть код для этого, но если я получаю ожидаемый результат, то я не думаю, что нам это нужно сейчас)
3) Теперь я хочувыполнить поиск в таблице items
и извлечь только элементы, содержащие один из активных идентификаторов.Таким образом, элемент должен выглядеть следующим образом:
![ITEM](https://i.stack.imgur.com/QZoTW.png)
4) ожидаемый результат - получить массив объектов, которые соответствуют growerId
одному из activeIds
.Так что, если я сделаю поисковый запрос для «цветов», один ожидаемый результат должен выглядеть следующим образом:
[ { _index: 'items-dev',
_type: 'items-dev_type',
_id: 'itemId=fc68dadf-21c8-43c2-98d2-cf574f71f06d',
_score: 11.397207,
_source:
{ itemId: 'fc68dadf-21c8-43c2-98d2-cf574f71f06d',
'@SequenceNumber': '522268700000000025760905838',
item_name: 'Flowers',
grower_name: 'Uhs',
image: '630b5d6e-566f-4d55-9d31-6421eb2cff87.jpg',
dev: true,
growerId: 'd04c5c93-a22c-48c3-a3b0-c79a61bdd923',
sold_out: true,
'@timestamp': '2018-12-20T16:09:38.742599',
quantity_type: 'Pounds',
active: true,
pending_inventory: 4,
initial_quantity: 5,
price: 10,
item_description: 'Field of flowers' } },
Так что здесь growerId
соответствует activeIds[1]
Но если я сделаюВ результате поиска «невидимый», созданный неактивным пользователем, я получаю:
[ { _index: 'items-dev',
_type: 'items-dev_type',
_id: 'itemId=15200473-93e1-477c-a1a7-0b67831f5351',
_score: 1,
_source:
{ itemId: '15200473-93e1-477c-a1a7-0b67831f5351',
'@SequenceNumber': '518241400000000004028805117',
item_name: 'Invisible too',
grower_name: 'Field of Greens',
image: '7f37d364-e768-451d-997f-8bb759343300.jpg',
dev: true,
growerId: 'f25040f4-3b8c-4306-9eb5-8b6c9ac58634',
sold_out: false,
'@timestamp': '2018-12-19T20:47:16.128934',
quantity_type: 'Pounds',
pending_inventory: 5,
initial_quantity: 5,
price: 122,
item_description: 'Add' } },
Теперь, когда growerId
не соответствует ни одному из идентификаторов в activeIds
.
5) Используя код, с которым вы помогли, он возвращает 0 элементов.
Дайте мне знать, если вам нужно больше деталей.Я работал над этим слишком долго: \