matchAll查询
matchAll查询:查询所有文档
语法:
GET 索引名称/_search{
"query":{
"match_all":{}
}
}
查询出来的结果,默认情况下,es一次展示10条数据
但是一般通过from和size来控制分页
{
"took" : 0, //时间,第一次执行比较慢,后面就会越来越快,因为执行的结果会缓存到内存里面去
"timed_out" : false,//超时没有
"_shards" : {//分片信息,集群。。
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {//命中
"total" : {
"value" : 3, //命中的条数是3条
"relation" : "eq"//操作方式是:等值查的
},
"max_score" : 1.0,//得分,后面会根据得分进行排序,得分越高顺序越靠前
"hits" : [//命中的数据,是一个数组
{
"_index" : "person",//索引
"_type" : "_doc",//默认的文档
"_id" : "5",//id,表示文档的唯一标识,默认字符串类型
"_score" : 1.0,//得分,根据其排序
"_source" : {//真实数据
"name" : "美丽",
"age" : 90,
"address" : "天津"
}
},
{
"_index" : "person",
"_type" : "_doc",
"_id" : "2",
"_score" : 1.0,
"_source" : {
"name" : "李二",
"age" : 22,
"address" : "北京海淀区"
}
}
]
}
}
term查询
term查询:不会对查询条件进行分词。
语法:
GET 索引名称/_search{
query":{
"term" : {
"字段名称":{
"value":"查询条件"
}
}
}
}
一般是将类型是keyword的,使用term进行查询
match查询
match查询:
- 会对查询条件进行分词。
- 然后将分词后的查询条件和词条进行等值匹配
- 默认取并集(OR)
语法:
match是词条分词后的等值匹配,无法进行模糊查询
模糊查询
wildcard查询
wildcard查询:会对查询条件进行分词。还可以 使用通配符?(任意单个字符)和*(0个或多个字符)
注意:在词的前面不要去写什么通配符,否则的话是会全部都去扫描的
regexp查询
regexp查询:正则查询
性能取决于正则表达式的性能
prefix查询
prefix查询:前缀查询
其对keyword类型的支持比较好,一般用其查询keyword类型的
范围查询
range范围查询:查找指定字段在指定范围内包含值
添加一个number索引,进行操作
排序
queryString查询
希望多字段进行查询
queryString:
- 会对查询条件进行分词。
- 然后将分词后的查询条件和词条进行等值匹配
- 默认取并集(OR)
还可以使用AND,但是这些都必须是大写的,小写的识别不了
- 可以指定多个查询字段
也就是说,会一个字段一个字段的去查询,将查询的结果返回
语法:
GET 索引名称/_search
{
"query":{
"query_strimg":{
"fileds":["字段1","字段2"...],
"query":"查询条件1 OR 查询条件2"
}
}
}
query_string
simple_query_string
布尔查询
boolQuery:对多个查询条件连接。连接方式:
- must (and):条件必须成立,会计算得分
- must_not (not) :条件必须不成立
- should (or):条件可以成立
- filter:条件必须成立,性能比must高。不会计算得分
语法:
GET 索引名称/_search
{
"query": {
"bool": {
"must": [{} ],
"filter": [{}],
"must_not": [{}],
"should": [{}]
}
}
}
must(计算得分)
filter(不计算得分)
聚合查询
指标聚合:相当于MySQL的聚合函数。max、min、avg、sum等
桶聚合:相当于MySQL的group by操作。不要对text类型的数据进行分组,会失败。
指标聚合
桶聚合
用途:
高亮查询
高亮三要素:
- 高亮字段
- 前缀
- 后缀