目录
一、前言
类似关系型数据库,ES也有自己的query语言,其搜索结构都是由json串组合构成请求体发送。Elasticsearch提供了基于JSON的完整查询DSL(特定于域的语言)来定义查询。
该篇文章对DSL的基本使用做简单介绍。
二、setting和mapping详解
1、ES的字段类型
字符串类型 string,text,keyword,建议keyword。
/**
ES索引默认支持keyword和text,其中text用于分词【不支持排序,不用于聚合,结果不准确(默认fielddata=false,聚合需要配合fielddata=true使用)】,
keyword不支持分词【不需要分词时,那么指定字段为keyword】。
ElasticSearch5.x以上版本,字符串将默认被同时映射成text和keyword类型。
**/
整数类型 integer,long,short,byte // integer,long支持排序
浮点类型 double,float,half_float,scaled_float // 注意浮点数进行range范围时的精度
逻辑类型 boolean
日期类型 date 支持排序
范围类型 range
二进制类型 binary
特殊类型 IP类型 ip,存储iPv4,ipv6地址
其他一些特殊类型:
复合类型 数组类型array,可存储多个值
对象类型 object
嵌套类型 nested
地理类型 地理坐标类型geo_point
地理地图 geo_shape
范围类型 completion
ES索引默认支持keyword和text,其中
text用于分词【不支持排序,不用于聚合,结果不准确(默认fielddata=false,聚合需要配合fielddata=true使用)】;
keyword不支持分词【不需要分词时,那么指定字段为keyword】。
ElasticSearch5.x以上版本,字符串将默认被同时映射成text和keyword类型。即一个字段默认定义类型是type后,通过fields字段又同时支持keyword类型。那么根据具体要求,选择分词或不分词查询。
2、setting
tokenizer表示新的自定义分词器;
analyzer表示配置新的分析器,一般是char_filter、tokenizer和一些token filter的组合;
char_filter表示字符过滤器;
filter表示定义新的token filter,如同义词filter;
3、mapping
三、基本的DSL语句
ES中常见的查询类型分为简单查询、复合查询、聚合查询等。
1、基本DSL操作
1.1、查看es所有索引