【发布时间】:2022-03-21 19:45:24
【问题描述】:
我正在使用弹性搜索 6.5。
我正在尝试组合一个查询,该查询将执行以下操作:
搜索文档
- 主键值必须是 85、0、95 或 3。
- 其中 sub key1 值必须以 4444 或空字符串开头。或者,
- 其中第二个 sub key2 值必须以 5555 或空字符串开头。
它还包括一些日期范围标准。
我觉得我需要两组“应该”。因为两个组中必须至少出现 1 个匹配项。但它们不能组合..因为至少 1 个子键也必须匹配。下面的“必须”是不正确的,因为它“应该”是一个应该,但两组应该是不可能的。
知道我该怎么做吗?
我把这个查询放在一起:
{
"size" : 200, "from": 0,
"query":{
"bool": {
"should": [{ "term": { "primary_key": "84"}},
{ "term": { "primary_key": "3"}},
{ "term": { "primary_key": "0"}},
{ "term": { "primary_key": "95"}}],
"must": [{ "match_phrase_prefix": { "subkey1" : "65200010100780"}},
{ "match_phrase_prefix": { "subkey2" : "00228315303"}}],
"filter": [ { "range": { "start_date": { "lte": "2018-11-01" }}},
{ "range": { "end_date": { "gt": "2018-11-01"}}}]
}
}
【问题讨论】:
标签: elasticsearch