【发布时间】:2018-09-10 19:32:42
【问题描述】:
我有一个多重匹配搜索查询,我之前根据 client_code 术语过滤器限制了搜索结果。这很好用。
我现在需要进一步限制结果,因为某些用户应该只能返回有限零件或产品 ID 的结果。零件/产品 ID 会有所不同,将通过应用程序逻辑确定。
如下面的无效示例所示,我正在努力解决的是如何为每个索引中的 id 应用术语过滤器。
GET parts,products/_search
{
"size": 20,
"query": {
"bool": {
"must": [],
"filter": [
{
"terms": {
"client_code": [
"abc"
]
}
},
{
"terms": {
"products.id": [
123,456,789
]
}
},
{
"terms": {
"parts.id": [
abc123,abc456,abc789
]
}
},
{
"multi_match": {
"query": "foo",
"fields": [
"_id",
"name",
"sku",
"title",
"barcode"
]
}
}
]
}
}
}
当然,我可以像这样应用术语过滤器:
{
"terms": {
"id": [
123,456,abc789
]
}
}
但是,如果索引中的 ID 相同,当数据来自自动递增的数据库时就是这种情况,我需要一种方式来说“给我产品 ID 1,2 和 3 以及零件 ID 1,3 和例如 4'。我希望这是有道理的?
任何指针将不胜感激。
【问题讨论】:
标签: elasticsearch lucene