EasticSearch с несколькими нечеткими параметрами на столбец? - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть таблица со столбцами Name, Address и Phone, и я хочу запустить эластичный поисковый запрос, например, значение столбцов

Name: nametest

Address: addresstest

Phone: 123456

с параметром размытости как

Name: 2

Address: 5

Phone: 1

Один запрос

{"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
  }
}

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вы должны использовать логический запрос , чтобы объединить несколько предложений 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 голосов
/ 18 сентября 2018

Использовать логический запрос

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
            }
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...