我正在使用elasticsearch 6,并有以下查询
{
"query":{
"bool":{
"should":[
{
"match_phrase":{
"fieldOne":{
"query":"One two three",
"slop":10
}
}
},
{
"match_phrase":{
"fieldTwo":{
"query":"one two three",
"slop":10
}
}
}
]
}
}
}当我想要将两个字段与查询中的术语进行匹配时,这种方法效果很好。
但是,如果我有一个文档,它在fieldOne中有术语'one‘和'two’,上面没有返回结果,因为'three‘是必需的
我似乎找不到一种方法来使查询中的术语成为可选的,例如,我想说的是在这两个字段中查找任何术语
我使用match_phrase的原因是使用了slop,它允许术语在字段中的不同位置,这也是我所需要的
发布于 2018-08-22 21:32:42
如果使用顺序不重要,则不需要使用match_phrase,只需使用简单的match查询即可完成此工作
{
"match":{
"fieldOne":{
"query":"one two three"
}
}
},然后,如果至少需要两个术语才能匹配,可以使用minimum_should_match
{
"match":{
"fieldOne":{
"query":"one two three",
"minimum_should_match": 2
}
}
},https://stackoverflow.com/questions/51968002
复制相似问题