【发布时间】:2021-10-29 23:53:07
【问题描述】:
寻求帮助为以下用例制定查询。我有一个文本字段和一个作为 ID 的整数字段。我需要搜索匹配的文本,但希望响应包含与其中一个 ID 匹配的结果。例如,我有两个字段。一个是产品 ID,它是文本。以及一个整数的所有者 ID。必须允许所有者仅查看他们拥有的产品。此外,所有者可以有多个 ID。
Elasticsearch 中的示例记录:
{
"product": "MKL89ADH12",
"ownerId" : 98765
},
{
"product": "POIUD780H",
"ownerId" : 12345
},
{
"product": "UJK87TG89",
"ownerId" : 98765
},
{
"product": "897596YHJ",
"ownerId" : 98765
},
{
"product": "LKGGN764HH",
"ownerId" : 784512
}
如果 98765 和 12345 属于同一所有者,他们应该只能查看前 4 个产品。如果他们搜索LKGGN764HH ,则不应返回任何结果。
我尝试了以下查询,但没有给出任何结果。
{
"size": 24,
"query": {
"bool": {
"must":[{
"match" : {
"product": {
"query": "MKL89ADH12"
}
}
},
{
"match" : {
"product": {
"query": "LKGGN764HH"
}
}
},
{
"terms": {
"ownerId": [98765, 12345],
"boost": 1.0
}
}
]
}
}
}
我希望响应包含 MKL89ADH12,因为我正在按 ownerId 进行过滤。寻求帮助为我的用例制定正确的查询。
【问题讨论】:
标签: elasticsearch