接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集的文档。