es的常用字段类型和查询
在elasticsearch 中,index就像sql中的库,type就像sql中的表,document就像sql中的记录。
Index
1)分隔数据
ElasticSearch“真正用于分隔数据的结构“只有index,而没有type,type实际上作为了一个元数据(类似SQL中的id,作为额外的标识数据)来实现逻辑划分。
2)mapping
在index中还有一个mapping,mapping管理了整个index的各个字段的属性,也就是定义了整个index中document的结构。
1、 es数据类型
1)核心数据类型
(1)字符串类型: text, keyword
(2)数字类型:long, integer, short, byte, double, float, half_float, scaled_float
(3)日期:date
(4)日期 纳秒:date_nanos
(5)布尔型:boolean
(6)Binary:binary
(7)Range: integer_range, float_range, long_range, double_range, date_range
2、查询
1) 精确值查找
term
2)范围检索
range
3)分词检索
match
match_all
4) 过滤条件
must/filter的区别
match:请求意味着它们被用来评定每个文档的匹配度的评分;
filter:它们将过滤出不匹配的文档,但不会影响匹配文档的分数;
5)聚合查询
aggs
Bool查询包括四种子句:
must
Filter
Should
must_not
must, 返回的文档必须满足must子句的条件,并且参与计算分值
filter, 返回的文档必须满足filter子句的条件。但是跟Must不一样的是,不会计算分值, 并且可以使用缓存
从上面的描述来看,你应该已经知道,如果只看查询的结果,must和filter是一样的。区别是场景不一样。如果结果需要算分就使用must,否则可以考虑使用filter