mysql - 将 Mysql 查询转换为弹性搜索
问题描述
关于我之前的问题ElasticSearch Query where mapping and doc sample is given 我想将此 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"
}
}
]
}
}
}
请注意,我在keyword
字段上使用了 Term Query/Terms Query,因为从 sql-query 看来您想要完全匹配,而我已经multi-match
在text
字段上使用过。
让我知道这是否有帮助!
推荐阅读
- python - 我什至如何在 Python 中使用“else”语法?
- linux-device-driver - 如何为 Beaglebone 的 SPI 接口添加对超过 4 个片选的支持
- java - Eclipse Java 资源文件夹
- r - 带有闪亮的ggplot中的POSIXct轴和sliderInput
- java - 想法不显示子项目
- javascript - Laravel 8 - 数据表脚本不起作用
- go - 相当于 pythons pdb.set_trace()?
- excel - 如何在 Excel 宏中的 IF ELSE 语句中使用 CONCATENATE
- c# - 使用来自两个 IObservableCache 的元组键创建单个 ObservableCache
- firebase - 为什么 Google Firebase Cloud Firestore 有“写入”、“更新”安全规则,而我们不应该允许用户直接在数据库上写入?