1.简介
本宝学习ES已经好久了,19年就接触到了ES,但是至今为止还不能随心所欲的操作es。因此这篇文章结合SQL查询数据的语句,来引出对应的ES查询语句。来加深对ES使用的熟练程度。
2.工具
- es-head:可视化工具,安装google插件
 sense:这个插件是看一位博主的语雀笔记得到的 https://www.yuque.com/jelly-meonx/ryey1n/de5vtg
3.实战
3.1等值查询(term)
需求:查询spuId=106的所有数据
SQL语句
select * from goods where spuId=106
ES查询
GET 10.11.0.182:9200/goods/_search{"query": {"term": {"spuId": 106}}}
3.2 in查询(terms)
- 需求:查询spuId 为 44,37,111的所有数据
 SQL语句
select * from goods where spuId in (44,37,111)
ES查询
GET 10.11.0.182:9200/goods/_search{"query": {"terms": {"spuId": [44,37,111]}}}
3.3范围查询(Range)
- 需求:查询 1<sales<200的数据
 - SQL语句 ```sql
 
select * from goods where sales>1 and sales<200
- ES查询```jsonGET 10.11.0.182:9200/goods/_search{"query": {"range" :{"sales":{"gt":1,"lt":200}}}}
3.4主键in查询(IDS)
- 需求:查询id等于 1,2,3的数据
 - SQL语句 ```sql
 
select * from goods where id in (1,2,3);
- ES查询```jsonGET 10.11.0.182:9200/goods/_search{"query": {"ids" :{"values":[1,2,3]}}}
注:es的主键是 _id .
3.5模糊查询(Prefix/Regexp/Wildcard)
在SQL中的模糊查询就是 like关键字搞定的,但是在ES中有三种。
3.5.1前缀模糊查询(Prefix)
- 需求:查询shopName是以自营开头的
 - SQL语句 ```sql
 
select * from goods where shopName like “自营%”;
- ES查询```jsonGET 10.11.0.182:9200/goods/_search{"query": {"prefix" :{"shopName":{"value": "自营"}}}}
3.5.2正则表达式查询(Regexp)
- 需求: 查询mainTitle 为
%黑色%的数据 - SQL语句 ```sql
 
select * from goods where mainTitle like %黑色%;
- ES查询```jsonGET 10.11.0.182:9200/goods/_search{"query": {"regexp" :{"mainTitle":{"value": ".?黑色.?"}}}}
3.5.3通配符查询(Wildcard)
- 需求:查询mainTitle 为
%黑色%的数据 - SQL语句 ```sql
 
select * from goods where mainTitle like %黑色%;
- ES查询```jsonGET 10.11.0.182:9200/goods/_search{"query": {"wildcard" :{"mainTitle":{"value": "*黑色*"}}}}
