关于我之前的问题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%')
期待您的帮助
以下查询将为您提供帮助。请注意,在映射contact_no中,您已经提到了上述查询phone。
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-match在text字段上使用了。
keyword
multi-match
text
让我知道是否有帮助!