将Mysql查询转换为Elastic Search

发布于 2021-02-01 11:50:20

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

期待您的帮助

关注者
0
被浏览
133
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    以下查询将为您提供帮助。请注意,在映射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"
              }
            }
          ]
        }
      }
    }
    

    我使用过术语查询术语查询多匹配查询的变体。

    请注意,我已经在keyword字段上使用了Term Query / Terms Query,从sql-
    query来看,您似乎需要完全匹配,而我已经multi-matchtext字段上使用了。

    让我知道是否有帮助!



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看