我一直在为OpenSearch文档和stackoverflow问题而挠头。我该如何做这样的事情:
选择文档WHERE studentId in [1234, 5678] OR applicationId in [2468, 1357]
。
只要studentId
与所提供的值之一完全匹配,或者applicationId
与所提供的值之一完全匹配,则该文档应包含在响应中。
当我想搜索单个字段的多个值并获得完全匹配时,以下命令起作用:
{
"must":[
{
"terms": {
"studentId":["1234", "5678"]
}
}
]
}
这将在studentId in [1234, 5678]
上找到完全匹配项。
如果我尝试添加条件以同时查找(逻辑或)applicationId in [2468, 1357]
,则以下语句将不起作用:
{
"must":[
{
"terms": {
"studentId":["1234", "5678"]
}
},
{
"terms": {
"applicationId":["2468", "1357"]
}
}
]
}
因为这将对两个查询执行逻辑与。我需要逻辑或。
我不能使用should
,因为这会返回不相关的结果。下面的代码对我不起作用:
{
"should":[
{
"terms": {
"studentId":["1234", "5678"]
}
},
{
"terms": {
"applicationId":["2468", "1357"]
}
}
]
}
我发现返回的结果实际上并不匹配,尽管这是一个terms
搜索。
1条答案
按热度按时间cyvaqqii1#
您是否可以尝试使用以下查询..