我在搜索术语时遇到了一个错误。错误消息是
“[parsing\u exception][terms]未知标记[start\u array]在[activeids]之后,{line=1&col=63}”
活动ID是唯一ID的数组。有点像
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小时前”
我会详细说明一下。
1) 总的来说,我正在尝试检索属于活动用户的项目。共有两个表: user
以及 items
. 所以我首先运行一个es,它返回包含 { active: true }
从 user
table
2) 运行es返回一个我正在调用的id数组 activeIds
. 数组看起来像我在示例中已经显示的数组。到目前为止,这是可行的(如果您想查看代码,请告诉我,但是如果我得到了预期的结果,那么我认为我们现在不需要它)
3) 现在我想搜索 items
表,并仅检索包含一个活动ID的项。因此,项目应该如下所示:
4) 预期结果是检索与 growerId
和一个 activeIds
. 因此,如果我对“flowers”进行搜索查询,一个预期结果应该如下所示:
[ { _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
与中的任何ID都不匹配 activeIds
.
5) 使用您帮助的代码,它返回0项。
如果你需要更多细节,请告诉我。我在这方面做得有点太久了:\
1条答案
按热度按时间chhkpiq41#
术语查询接受术语数组,因此术语查询的定义如下:
在进行上述更正之后,您还可能面临其他错误。下面是完整的查询,可以帮助您: