ES语法入门

Elasticsearch 对比 sql

基本语法

过滤语句

trem过滤

等价于sql =

http://xxx.xxx.xxx.xxx:9200/tablename/_search
{
   "query":{
   		"term":{
   		  "tablefield":"xxx"
      }
   }
}
select * from tablename where tablefield = "xxxx"

trems过滤

等价于sql in

http://xxx.xxx.xxx.xxx:9200/tablename/_search
{
   "query":{
   		"terms":{
   		  "tablefield":["xxx1","xxx2"]
      }
   }
}
select * from tablename where tablefield in ("xxx1","xxx2")

range过滤

等价于 >,<,<=,>=

http://xxx.xxx.xxx.xxx:9200/tablename/_search
{
   "query":{
   		"range":{
   		  "tablefield":{
   		     "gte":1,
   		     "le":2,
         }
      }
   }
}
//gt:大于>
//gte:大于等于>=
//lt:小于<
//lte:小于等于<=
select * from tablename where tablefield <2 and tablefield>=1

exists过滤

等价于 is NOT NULL

http://xxx.xxx.xxx.xxx:9200/tablename/_search
{
   "query":{
   		"exists":{
   		  "field":"tablefield"
      }
   }
}
select * from tablename where tablefield is NOT NULL

missing过滤

等价于 is NULL

http://xxx.xxx.xxx.xxx:9200/tablename/_search
{
   "query":{
   		"missing":{
   		  "field":"tablefield"
      }
   }
}
select * from tablename where tablefield is NULL

bool过滤 (组合多个过滤语句)

must

等价于 and

http://xxx.xxx.xxx.xxx:9200/tablename/_search
{
   "query":{
   		"bool":{
   		 "must":[
   		     语句1,
   		     语句2
   		 ]
      }
   }
}
select * from tablename where 语句1 and 语句2

must_not

等价于 and

http://xxx.xxx.xxx.xxx:9200/tablename/_search
{
   "query":{
   		"bool":{
   		 "must_not":[
   		     语句1,
   		     语句2
   		 ]
      }
   }
}
select * from tablename where !语句1 and !语句2

should

等价于 or

http://xxx.xxx.xxx.xxx:9200/tablename/_search
{
   "query":{
   		"bool":{
   		 "shuld":[
   		     语句1,
   		     语句2
   		 ]
      }
   }
}
select * from tablename where 语句1 or 语句2

filter

等价于 and 与must区别是不参与es算分

http://xxx.xxx.xxx.xxx:9200/tablename/_search
{
   "query":{
   		"bool":{
   		 "filter":[
   		     语句1,
   		     语句2
   		 ]
      }
   }
}
select * from tablename where 语句1 and 语句2
上一篇:Mybatis plus 实体类字段有Mysql关键字的处理方法详解


下一篇:忽略非数据库字段的注解