我正在使用Elasticsearch 6,并具有以下查询
{
"query":{
"bool":{
"should":[
{
"match_phrase":{
"fieldOne":{
"query":"One two three",
"slop":10
}
}
},
{
"match_phrase":{
"fieldTwo":{
"query":"one two three",
"slop":10
}
}
}
]
}
}
}
当我想将两个字段与查询中的术语匹配时,此方法效果很好。
但是,如果我在fieldOne中有一个包含术语“一”和“二”的文档,则上面的结果不会返回结果,因为需要“三”。
我似乎找不到一种使查询中的术语成为可选的方式,例如我想说的是在这两个字段中找到任何术语
我使用match_phrase的原因是使用斜线,它允许术语在我也需要的字段中位于不同的位置
答案 0 :(得分:1)
如果该命令对于使用并不重要,则无需使用match_phrase
,只需执行简单的match
查询即可
{
"match":{
"fieldOne":{
"query":"one two three"
}
}
},
然后,如果您需要至少两个词来匹配,则可以使用minimum_should_match
:
{
"match":{
"fieldOne":{
"query":"one two three",
"minimum_should_match": 2
}
}
},