目录 前言 表达式与MYSQL比对 操作符与MYSQL比对 排序与MYSQL比对 分页/数据偏移量与MYSQL比对 查询与MYSQL比对 group by与MYSQL比对
前言
在已经学了mysql的背景下,突然接受ES这样的语法是有点难,因此拿来与mysql作比对,加快理解,当然ES还是有很多新的概念,需要继续深造
表达式与MYSQL比对
MYSQL ES = term in terms like wildcard, match, match_all (注意单词解析) > < range is null missing
操作符与MYSQL比对
操作符通常与bool过滤器配合使用
MYSQL ES and must(参与评分计算,性能略低), filter(filter_context,不参与评分计算,性能高) not must_not(filter_context字段,不参与于评分计算) or should
mysql:
select * from goods where name = "A" or (name = "B" AND title = "C")es:
{"query":{"bool":{"should":[{"term":{"name":"A"}},{"bool":{"must":[{"term":{"name":"B"}},{"term":{"title":"C"}}]}}]}}
}
排序与MYSQL比对
特别注意字符串排序,需要利用分析器的特性来标明,才能达到效果,通常在映射字段的类型时指定该字段分析器:analyzer
MYSQL ES order by sort desc desc asc asc
分页/数据偏移量与MYSQL比对
MYSQL ES offset from take size
查询与MYSQL比对
group by与MYSQL比对
MYSQL ES group by aggs结合composite, 当然还有很多聚合写法
composite不支持netsted嵌套结构,不支持获取聚合后的总数量, 可结合after进行无页数分页, 通常mysql: group by a,b,c时, 可用composite复合聚合