ElasticSearch每列有多个模糊参数?

问题描述 投票:0回答:2

我有一个列为NameAddressand和Phone的列表,我想运行一个弹性搜索查询,如列的值是

Namenametest

Addressaddresstest

Phone123456

用模糊参数作为

Name2

Address5

Phone1

单个查询是

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

如何使用多匹配查询来获得结果?

这不起作用

{
  "query": {
    "match": [
      {
        "Name": {
          "query": "Nametest",
          "fuzziness": 3,
          "boost": 5.0
        }
      },
      {
        "Address": {
          "query": "Addresstest",
          "fuzziness": 3,
          "boost": 4.0
        }
      },
      {
        "Phone": {
          "query": "5680728.00",
          "fuzziness": 2,
          "boost": 4.0
        }
      }

    ],
    "must": [
    ],
    "minimum_should_match": 2
  }
}
elasticsearch
2个回答
1
投票

你应该使用boolean query结合多个must条款。这些条款将与您的文档强制匹配,并将用于计算分数。如果您希望至少匹配2个子句,则可以使用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
    }
  }
}

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
            }
          }
        }
      ]
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.