【问题标题】:Convert Mysql Query to Elastic Search将 Mysql 查询转换为弹性搜索
【发布时间】:2020-03-20 11:38:24
【问题描述】:

关于我之前的问题ElasticSearch Query,其中给出了映射和文档示例 我想将此 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%')

期待您的帮助

【问题讨论】:

    标签: mysql elasticsearch


    【解决方案1】:

    以下查询应该对您有所帮助。请注意,在您的映射中,您有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"
              }
            }
          ]
        }
      }
    }
    

    我使用了Terms QueryTerm QueryMulti-Match 查询的变体。

    请注意,我在 keyword 字段上使用了 Term Query/Terms Query,因为从 sql-query 看来您想要完全匹配,而我在 text 字段上使用了 multi-match

    如果这有帮助,请告诉我!

    【讨论】:

      猜你喜欢
      • 2018-09-23
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      相关资源
      最近更新 更多