记住添加的时候记得带上唯一标识的字段,例如:数据库非业务主键字段id,uuid等,添加的字段不能凭空捏造,必须能在其他相应文档列表中的"_source"下能找到,否则依据该字段查询会找不到
一、查(重点)
1.查询全部
select * from user_info
GET /user_portrait/_search
{
"query":
{
"match_all":
{
}
}
}
GET /user_portrait/_search
2.匹配查询(重点)
单个
//分词查询 如果单单输入'xiao',或者'ling'可能导致查询失败,查不到。
GET /user_portrait/_search
{
"query":
{
"match":
{
"uuid": "xiaoling"
}
}
}
多个(例如要查两个用户)
//分词查询 如果单单输入'xiao',或者'ling'可能导致查询失败,查不到。
GET /user_portrait/_search
{
"query":
{
"match":
{
"uuid": "xiaoling",
"uuid": "lisi"
}
}
}
3.精确查询
select * from user_info where uuid= 'xiaoling'
GET /user_portrait/_search
{
"query":
{
"term":
{
"uuid": "xiaoling"
}
}
}
3.范围查询(gt/lt:大于/小于 gte/lte:大于等于/小于等于)(一般查询多条出来)
select * from user_info where pass >= 123456
GET user_portrait/_search
{
"query":
{
"range": {
"pass": {
"gte": 123456
}
}
}
}
4. bool 多条件复合查询
a.查询pass=123456并且uuid=‘xiaoling’
记得bool在最外面包裹着,否则must打不出,must就是=。多个等于条件在同一个must里面[ ]写就行.想写多少都行,满足查询条件即可
select * from user_info where pass=123456 and uuid = 'xiaoling'
GET user_portrait/_search
{
"query":
{
"bool":
{
"must":
[
{
"match":
{
"uuid": "xiaoling"
}
},
{
"match":
{
"lwsas": "100"
}
}
]
}
}
}
b.查询pass>=123456并且uuid!=‘zs’的,那么除zs外pass大于等于123456的都被查询出来
select * from user_info where pass >= 123456 and name != 'zs'
GET user_portrait/_search
{
"query":
{
"bool":
{
"must":
[
{
"range":
{
"pass": {
"gte": 123456
}
}
}
],
"must_not":
[
{
"match":
{
"uuid": "zs"
}
}
]
}
}
}
should
表示至少满足一个条件
5.匹配某字段是否为空
某字段为空的列表
在user_portrait
索引中,查找所有不包含uuid字段的文档列表
GET user_portrait/_search
{
"query":
{
"bool":
{
"must_not": [
{
"exists":
{
"field": "uuid"
}
}
]
}
}
}
某字段不为空的列表
在user_portrait
索引中,查找所有包含uuid字段的文档列表
GET user_portrait/_search
{
"query":
{
"bool":
{
"must": [
{
"exists":
{
"field": "uuid"
}
}
]
}
}
}
6.in查询(比如:查询uuid为zhangsan,lisi,zhaoliu的用户列表(因为uuid唯一性查询出来只有三条,那么一般情况下是列表数据记录或者文档存在多条))
select * from user_info where age in('zhangsan', 'lisi', 'zhaoliu')
GET user_portrait/_search
{
"query":
{
"terms": {
"uuid": ["zhangsan","lisi","zhaoliu"]
}
}
}