我目前正在尝试创建一个在切换到弹性搜索5后以不同方式匹配过滤器中多个字段的查询,但它们似乎不起作用。这就是我认为查询应该是:
query: {
bool: {
must: [{ match: { name: 'athing' }}],
filter: [
{ bool: {
must: [
{ term: { ownerId: 123} },
{ term: { itemId: 3453} },
]
}},
{ bool: {
minimum_should_match: 1,
must: [
{ term: { groupId: 123565} },
{ term: { groupId: 5555} },
]
}}
]
}
}
在这种情况下,结果必须与未分析的项目ID和组ID匹配。在前面的代码中,使用了弹性搜索1.5,匹配是由'和'和'或'放在过滤器内。这似乎不再起作用了。
我也希望这样做,以便查询能够让任何人拥有一个传递的组ID(而不是所有组)。我尝试在过滤器的第二个bool查询中执行此操作。
理想情况下,我想要一个匹配' athing'的查询,属于所有者ID 123和项目ID 3453,它存在于组ID 123565或5555中。
答案 0 :(得分:1)
尝试
bool:
must: [ term: ownerId, term: itemId]
should: [ term: groupId, term: groupId ]
minimum_should_match: 1