接Elasticsearch读书笔记(一) ** 静态映射字段类型:**
1、keyword。适用于索引结构化的字段,例如姓名,电话号码,电子邮箱,身份证等。通常用于过滤,排序,聚合,精确搜索。
2、数字。Long,Integer等。
3、text。全文搜索,例如文档内容,产品描述等。通过分词器生成倒排索引。不用于排序,聚合。
4、date。内部存储的是毫秒计时的长整型,配置的时候要设定格式化。
5、boolean。
6、binary。Base64编码的字符串,默认不存储,不搜索。
7、array。没有专门的数组类型。第一个值决定整个数组的类型,内部类型必须一致。
8、object。文档内包含的子对象,但是写入ES后会扁平化。
9、nested。因为文档内部的子对象会被扁平化,如果希望子对象也能被搜索,就指定此类型。
10、geo_point。经纬度,用于查找一定范围内的地理位置。通过地理位置或相对中心点的距离聚合文档。把距离因素整合到文档评分中,通过距离对文档排序。
11、geo_shape。存一块区域。
12、IP。
13、range。时间,年龄范围。例如date_range、integer_range等。例如一个商品的保质期是从2020-01-01~2020-12-31,可以设置shelf_life:{type:date_range,format:yyyy-MM-dd}。商品信息是:shelf_life:{gte:2020-01-01,lte:2020-12-31}
14、token_count。统计字符串分词后词项的个数。
元字段:
_index。所属索引。
_id。文档ID。
_source。文档正文的原始JSON。
_size。_source字段大小。
_all。所有字段拼接在一起的总字段,空格分开。多用于有关键词,但不指定关键词属于哪个具体字段。
_field_names。存储文档中包含非空字段的名字,常用于exists查询。
_routing。自定义路由值,默认是ID。
搜索机制:
1、输入原始文档。
2、保存原始文档,生成docID。
3、通过分词过滤生成倒排索引。
4、用户查询,分词后查询倒排索引,定位文档集。
5、对文档集评分,排序,高亮处理后返回。
简单查询:
term query。不分词,精确匹配。
match query。分词。
terms query。包含多个词的文档。
range query。匹配范围内的数值,日期,字符串文档。gt>,gte>=,lt<,lte<=。
exists query。字段中非空值的文档。
prefix query。字段中给定前缀开始的文档。
wildcard query。通配符查询。
regexp query。正则表达式查询
fuzzy query。错词白字的模糊查询。
type query。查指定类型的文档。
ids query。指定ID集的文档。