EasticSearch每列有多个模糊参数?

时间:2018-09-18 07:16:22

标签: elasticsearch

我有一个表,其列为sportCodesNameAddress,我想运行一个弹性搜索查询,例如column value is

PhoneName

nametestAddress

addresstestPhone

模糊性参数为

123456Name

2Address

5Phone

一个查询是

1

如何使用多重匹配查询获取结果?

这不起作用

{"query": {"match" : {"Address" : {"query" : "Address","fuzziness" : 2}}}}

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
            }
          }
        }
      ]
    }
  }
}