我有一个表,其列为sportCodes
,Name
和Address
,我想运行一个弹性搜索查询,例如column value is
Phone
:Name
nametest
:Address
addresstest
:Phone
模糊性参数为
123456
:Name
2
:Address
5
:Phone
一个查询是
1
如何使用多重匹配查询获取结果?
这不起作用
{"query": {"match" : {"Address" : {"query" : "Address","fuzziness" : 2}}}}
答案 0 :(得分:1)
您应该使用boolean query来组合多个must
子句。这些条款将与您的文档强制匹配,并将用于计算分数。如果您希望至少有两个子句匹配,则可以使用minimum_should_match
参数并将所有条件转移到should
子句中。
在这些子句中,您可以尝试使用匹配查询。
示例:
{
"query": {
"bool": {
"must": [],
"should": [
{
"match": {
"Name": {
"query": "Nametest",
"fuzziness": 3,
"boost": 5
}
}
},
{
"match": {
"Address": {
"query": "Addresstest",
"fuzziness": 3,
"boost": 4
}
}
},
{
"match": {
"Phone": {
"query": "5680728.00",
"fuzziness": 2,
"boost": 4
}
}
}
],
"minimum_number_should_match": 2
}
}
}
答案 1 :(得分:0)
使用布尔查询
GET query
{
"query": {
"bool": {
"must": [
{
"match": {
"Name": {
"query": "Nametest",
"fuzziness": 3,
"boost": 5
}
}
},
{
"match": {
"Address": {
"query": "Addresstest",
"fuzziness": 3,
"boost": 4
}
}
},
{
"match": {
"Phone": {
"query": "5680728.00",
"fuzziness": 2,
"boost": 4
}
}
}
]
}
}
}