如果可能的话,我强烈建议更新您的ElasticSearch版本,自0.9.x以来已经发生了重大变化。
这个问题不够具体,因为 ElasticSearch 有很多方法可以实现此功能,而且它们对你的总体目标略有不同。如果您希望完全复制该 SQL 查询,则在这种情况下,请使用通配符查询或前缀查询。
使用通配符查询:
注意:请注意通配符搜索,它们很慢。避免在字符串开头使用通配符。
GET /my_index/table_name/_search
{
"query": {
"wildcard": {
"field_name": "a*"
}
}
}
或前缀查询
GET /my_index/table_name/_search
{
"query": {
"prefix": {
"field_name": "a"
}
}
}
或部分匹配:
注意:不要盲目使用部分匹配,虽然使用它有极端情况,但正确使用分析仪几乎总是更好。
此外,这个确切的查询将等效于 ,同样,通过正确使用映射和正常的查询搜索,可以更好地设置!LIKE '%a%'
GET /my_index/table_name/_search
{
"query": {
"match_phrase": {
"field_name": "a"
}
}
}
如果您正在阅读此内容,例如查询ES以进行搜索,我建议您阅读edge-ngrams,这与正确使用映射有关,具体取决于您尝试执行的操作=)