Конвертировать Mysql Запрос в Elasti c Поиск - PullRequest
1 голос
/ 20 марта 2020

относительно моего предыдущего вопроса ElasticSearch Query , где дано сопоставление и образец c. Я хочу преобразовать этот MySql запрос в Elasticsearch. Вот запрос mysql

Select * from us_data where phone!=0 AND city_code IN ('Homestead','Hialeah','Key Biscayne','Miami Beach','Miami','North Miami Beach','Ochopee','Opa Locka') AND state_code='FL' AND (name like '%appliance%' or city_code like '%appliance%' or address like '%appliance%' or phone like '%appliance%')

Ждем вашей помощи

1 Ответ

1 голос
/ 21 марта 2020

Ниже запрос должен помочь вам. Обратите внимание, что в вашем отображении у вас есть contact_no, а в приведенном выше запросе вы упомянули phone.

Тем не менее, я использовал contact_no, чтобы он соответствовал отображению.

POST <your_index_name>/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "city_code.keyword": [
              "Homestead",
              "Hialeah",
              "Key Biscayne",
              "Miami Beach",
              "Miami",
              "North Miami Beach",
              "Ochopee",
              "Opa Locka"
            ]
          }
        },
        {
          "term": {
            "state_code.keyword": "FL"
          }
        },
        {
          "multi_match": {
            "query": "*appliance*",
            "fields": ["name","city_code","address","contact_no"]
          }
        }
      ],
      "must_not": [
        {
          "term": {
            "contact_no.keyword": "0"
          }
        }
      ]
    }
  }
}

Я использовал варианты Условия запроса , Запрос термина и Много совпадение .

Обратите внимание, что я использовал Term Query / Terms Query в полях keyword, так как из запроса sql кажется, что вы хотите точное совпадение, в то время как я использовал multi-match в text полей.

Дайте мне знать, если это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...