elasticsearch
https://zhuanlan.zhihu.com/p/524128889
- 索引 (indices ):类似于我们的关系型数据库
- 类型(type ):类似于数据库的表结构
- 文档(Document ):类似于数据库表中的行,也就是具体的数据
- 字段(Field ):雷雨时数据库表中的列
- es5 版本:允许一个索引库下中可以创建多个类型
- es6 版本:一个索引库下中只能创建一种类型
- es7 版本:一个索引库不支持显式创建类型,当创建索引的时候,默认会创建一个名称为
_doc
的类型
因为一个索引库下,如果多个类型,会存在搜索问题,比如,类型 A 下某个字段order_source
是一个long
型;类型 B 下,字段order_source
是一个text
型。
这两个字段名称都是一样,实际存入 Lucene 中,也是同一个字段,但是他们的字段类型是不一样的,要么是long
型,要么是text
型,只会是其中一个,这就造成一个问题,类型 A 中order_source
字段不可用,或者类型 B 中order_source
字段不可用。
- 多条件查询
{ "query":{ "bool":{ "must":[ { "match":{ "name":"张" } }, { "match":{ "sex:"男" } } ] } } }
{ "query":{ "bool":{ "should":[ { "match":{ "name":"张" } }, { "match":{ "sex:"男" } } ] } } }
{ "query":{ "bool":{ "filter":{ "range":{ "age":{ "gt" : 25, "lt" : 50 } } } } } }
- 聚合查询
{ "aggs":{ "age_group":{ "terms":{ "field":"age" } } }, "size" : 0 }
{ "aggs" : { //聚合操作 "age_avf" : { //名称,自定义 "avg" : { //分组 "field" : "age" //分组字段 } } }, "size" : 0 }
- 排序
{ "query" : { "match_all" : { } }, "sort" : { "_id":{ "order" : "asc" } } }
- 查询指定列
{
"query" : {
"match_all" : {
}
},
"_source" : ["name","sex"]
}