关于我之前的问题ElasticSearch Query,其中给出了映射和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
,使其与映射保持一致。
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 Query,Term Query和Multi-Match查询的变体。
请注意,我已经在
keyword
字段上使用了Term Query / Terms Query,从sql查询中看来,您需要完全匹配,而我已经在multi-match
字段上使用了text
。让我知道这是否有帮助!
关于mysql - 将Mysql查询转换为Elastic Search,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60773403/