Elasticsearch 6.x版本全文检索学习之倒排索引与分词、Mapping 设置
Beats,Logstash负责数据收集与处理。相当于ETL(Extract Transform Load)。
Elasticsearch负责数据存储、查询、分析。
Kibana负责数据探索与可视化分析。
1、Elasticsearch的常见术语。注意:Elasticsearch6.x版本以后概念发生了变化。
2、索引Index:由具有相同字段的文档列表组成。索引Index是文档的集合。相当于数据库中的数据表。
Elasticsearch 6.x版本以后,一个索引Index下面最多只能建一个Type或者未来没有Type了。索引中存储具有相同结构的文档(Document)。相当于数据表,数据表中有schema的概念,数据表有自己的表结构的定义。而Index的mapping相当于数据表的schema的概念,Index也需要定义字段名称和类型的。
每个索引都有自己的mapping定义,用于定义字段名和类型。一个集群可以有多个索引。
3、文档Document:用户存储在es中的数据文档。es中存储的最小单元。相当于数据库中的一行数据。每个文档都有唯一的id标识,可以自行指定或者es自动生成。
Json Object,由字段Field组成,常见数据类型如下:
字符串:text(分词)、keyword(不分词)。
数值型:long、integer、short、byte、double、float、half_float、scaled_float。
布尔型:boolean。
日期:data。
二进制:binary。
范围类型:interger_range、float_range、long_range、double_range、date_range。
4、Document MetaData。元数据,用于标注文档的相关信息。
_index:文档所在的索引名称。
_type:文档所在的类型名称。
_id:文档唯一的id。
_uid:组合id,由_type和_id组成(6.x_type不再起作用,同_id一样)。
_source:文档的原始Json数据,可以从这里获取每个字段的内容。
_all:整合所有字段内容到该字段,默认禁用。
5、节点Node:一个Elasticsearch的运行实例,是集群的构成单元。
6、集群Cluster:由一个或者多个节点组成,对外提供服务。
7、Elasticsseach提供的Rest api。
Elasticsseach集群对外提供的RESTFul API,REST是REpresentational State Transfer的缩写。
URI指定资源,如Index、Document等等。
Http Method,指明资源操作类型,如GET、POST、PUT、DELETE等等。
Rest API常用的两种交互方式:Curl命令行、Kibana DecTools。
ElasticSearch有专门的Index API,用于创建(PUT)、查看(GET)、更新(Post)、删除(Delete)索引配置等等。
8、Elasticsseach提供的Rest api使用。
创建文档,指定id创建文档的api。创建文档的时候,如果索引不存在,es会自动创建对应的index和type。
PUT /index/type/id{
"username":"zhangsan",
"age":
}
查询文档,指定要查询的文档id。_source存储了文档的完整原始数据。
get /index/type/id
查询文档,搜索所有文档,用到_search,查询语句json格式,放到http body中发送到es,如下所示:
get /index/type/_search 返回_id为1的文档。 get /index/type/_search{
"query":{
"term":{
"_id":""
}
}
}
response结果,参数解释如下所示:
response结果,参数解释如下所示:
{
"took" : , # took是查询耗时,单位是ms。
"timed_out" : false,
"_shards" : {
"total" : ,
"successful" : ,
"skipped" : ,
"failed" :
},
"hits" : { # hits是命中的结果集。
"total" : , # total是符合条件的总文档数。
"max_score" : 0.2876821,
"hits" : [ # hits是返回的文档详情数据数组,默认前10个文档。
{
"_index" : "test_index", # _index是索引名称。
"_type" : "doc",
"_id" : "", # _id是文档的id。
"_score" : 0.2876821, # _score是文档的得分。
"_source" : { # _source是文档的详情。
"username" : "wangwu",
"age" :
}
}
]
}
}
批量创建文档API,es允许一次创建多个文档,从而减少网络传输开销,提升写入速率。endponit为_bulk,即url最后是_bulk,http method是post请求,如下所示:
action_type包含,index(如果存在则覆盖)、update、create(如果存在则报错)、delete这几种类型。
es允许一次查询多个文档,endpoint为_mget,如下所示:
9、Elasticsearch的倒排索引与分词。举例,书的目录页与索引页,目录页对应正排索引,索引页对应倒排索引。es存储的是一个json格式的文档,其中包含多个字段,每个字段会有自己的倒排索引。
a、正排索引就是文档Id到文档内容,单词的关联关系。倒排索引,就是单词到文档Id的关联关系。
b、倒排索引是搜索引擎的核心,主要包含两个部分。单词词典(Term Dictionary),倒排列表(Posting List),Posting是倒排索引项。
c、单词词典(Term Dictionary)是倒排索引的重要组成。
一是记录所有文档的单词,一般都比较大,
二是记录单词到倒排列表的关联信息,记录了单词关联了那些文档,记录一下关联信息,就可以找到关联的文档的id,通过关联id找到真正的文档信息。
d、倒排索引中的倒排列表。
倒排列表(Posting List)记录了单词对应的文档集合,由倒排索引项(Psoting)组成。
倒排索引项(Posting)主要包含如下信息:
文档Id,用于获取原始信息。
单词频率(TF,Term Frequency),记录该单词在该文档中的出现次数,用于后续相关性算分。
位置(Position),记录单词在文档中的分词位置(多个),用于做此语搜索(Phrase Query)。
偏移(Offset),记录单词在文档的开始和结束位置,用于做高亮显示。
10、分词,是指将文本转换成一系列单词(term or token)的过程,也可以叫做文本分词,在es里面称为Analysis,如下所示:
分词器,负责进行分词,分词器是es中专门处理分词的组件,英文名称为Analyzer。分词器的调用顺序,Character Filters ->Tokenizer ->Token Filter,它的组成如下所示:
Character Filters,针对原始文本进行处理,比如去除html特殊标记符。
Tokenizer,将原始文本按照一定规则切分为单词。
Token Filter,针对Tokenizer处理的单词就行再加工,比如转小写,删除或者新增等等处理。
11、Analyzer api,es提供了一个测试分词的api接口,方便验证分词效果,endpoint是_analyze。
a、可以直接指定analyzer进行测试。
b、可以直接指定索引中的字段进行测试。
c、可以自定义分词器进行测试。
12、Elasticsearch自带分词器,包含Standard、Simple、Whitespace、Stop、Keyword、Pattern、Language,如下所示:
a、Standard Analyzer,默认分词器,特性为:a、按照切分,支持多语言,b、小写处理。
包含Tokenizer(Standard)和Token Filters(Standard -> Lower case -> Stop[disabled by default])。
b、Simple Analyzer,特性为:a、按照非字母进行切分,b、小写处理。
包含Tokenizer(Lower Case)。
c、Whitespace Analyzer,特性为:a、按照空格进行切分。
包含Tokenizer(Whitespace)。
d、Stop Analyzer,Stop word指语气助词等修饰性的此语,比如the、an、的、这等等。特性为,a、相比Simple Analyzer多了Stop word处理。
包含Tokenizer(Lower Case),Token Filters(Stop)。
e、Keyword Analyzer,特性为,a、不分词,直接将输入作为一个单词输出。
包含Tokenizer(Keyword)。
f、 Pattern Analyzer,特性为,a、通过正则表达式自定义分隔符。b、默认是\W+,即非字词的符号作为分隔符。
包含Tokenizer(Pattern),Token Filters(Lower case -> Stop[disabled by default])。
g、Language Analyzer,提供了30+常见语言的分词器。
arabic、armenian、basque、bengali、brazilian、bulgarian、catalan、cjk、czech、danish、dutch、english。
13、中文分词,指的是将一个汉字序列切分成一个一个单独的词。在英文中,单词之间是以空格作为自然分界符,汉语中词没有一个形式上的分界符。
常用中文分词系统。
IK中文分词器。
a、实现中英文单词的切分,支持ik_smart,ik_maxword等模式。
b、可以自定义词库,支持热更新分词词典。
jieba中文分词器。
a、python中最流行的分词系统,支持分词和词性标注。
b、支持繁体分词,自定义分词,并行分词等等。
14、自定义分词,当自带的分词无法满足需求时候,可以自定义分词。通过自定义Character Filters、Tokenizer和Token Filter实现。
1)、Character Filters。
a、在Tokenizer之前对原始文本进行处理,比如增加、删除或者替换字符等等。
b、自带的如下所示:
Html Strip去除html标签和转换html实体。
Mapping进行字符替换操作。
Pattern Replace进行正则匹配替换。
c、会影响后续Tokenizer解析的postion和offset的信息。
2)、Tokenizer。
a、将原始文本按照一定规则切分为单词(term or token)。
b、自带的如下所示:
standard按照单词进行分割。
letter按照非字符类进行分割。
whitespace按照空格进行分割。
UAX URL Email按照standard分割,但不会分割邮箱和url。
NGram和Edge NGram连词分割。
Path Hierarchy按照文件路径进行切割。
3)、Token Filter。
a、对于Tokenizer输出的单词(term)进行增加、删除、修改等等操作。
b、自带的如下所示:
lowercase将所有term转换为小写。
stop删除stop words。
NGram和Edge NGram连词分割。
Synonym添加近义词的term。
15、分词使用说明,索引时分词和查询时候分词的选择。
分词使用说明,索引时分词和查询时候分词的选择。
1)、分词会在如下两个时机使用:
a、创建或者更新文档的时候(Index Time),会对相应的文档进行分词处理。
b、查询的时候(Search Time),会对查询语句进行分词。
2)、索引时分词,是通过配置Index Mapping中每个字段的analyzer属性实现的,不指定分词的时候,默认使用standard分词器。
3)、查询时分词的指定方式有如下几种。
a、查询的时候通过analyzer指定分词器。
b、通过index mapping设置search_analyzer实现,这个时候可以设置查询时分词,同事设置查询时分词。
4)、一般情况下,不需要特定指定查询时分词器,直接使用索引时分词器即可,否则会出现无法匹配的情况。
5)、分词的使用建议。
a、明确字段是否需要分词,不需要分词的字段就将type设置为keyword,可以节省空间和提高写性能。
b、善用_analyze_api,查看文档具体分词结果。
c、多动手测试,查看文档具体的分词结果。
16、Elasticsearch Mapping设置。类似数据库中的表结构定义,主要作用如下所示:
a、定义Index下的字段名(Field Name)。
b、定义字段的类型,比如数据型,字符串型,布尔型等等。
c、定义倒排索引相关的配置,比如是否索引,记录position等等。
如何获取到一个索引Index的mapping呢,如下所示:
如何自定义mapping呢,自定义mapping的api,如下所示:
自定义Mapping注意事项。
1)、Mapping中的字段类型一旦设定以后,禁止直接修改,原因如是所示,Lucene实现的倒排索引生成后不允许进行修改。
如果要进行修改字段类型的话,重新建立新的索引,然后做reindex操作。
2)、允许新增字段,通过dynamic参数来控制字段的新增。因为新增字段,类型不定,对于es来说,只是新增了一个倒排索引。dynamic参数是和properties一个级别的参数配置。
a、true(默认),允许自动新增字段。
b、false,不允许自动新增字段,但是文档可以正常写入,但无法对字段进行查询等操作。
c、strict文档不能写入,报错。
3)、copy_to参数,将该字段的值复制到目标字段,实现类似_all的作用,不会出现在_source中,只用来搜索使用。copy_to参数和type一个级别的参数。
4)、index参数,控制当前字段是否索引,默认为true,即记录索引,false不记录,即不可以搜索。index参数和type一个级别的参数。如果不希望被查询即可设置为false。
5)、index_options用于控制倒排索引记录的内容,有如下4种配置。index_options参数和type一个级别的参数。
a、docs只记录doc id。
b、freqs记录doc id和term frequencies。
c、positions记录doc id、term frequencies和term position。
d、offsets记录doc id、term frequencies、term position和character offsets。
e、text类型默认配置为positions,其他默认配置为docs。记录内容越多,占用空间越大。
6)、null_value,当字段遇到null值得时候得处理策略,默认为null,即空值,此时es会忽略该值,可以通过设定该值设定字段的默认值。null_value参数和type一个级别的参数。
更多参数详见官网文档即可。
17、Elasticsearch的数据类型。
1)、核心的数据类型(字段field对应的类型type)。
a、字符串类型text(分词的)、keyword(不分词的)。
b、数值型:long、integer、short、byte、double、float、half_float、scaled_float。
c、布尔型:boolean。
d、日期:data。
e、二进制:binary。
f、范围类型:interger_range、float_range、long_range、double_range、date_range。
2)、复杂数据类型。
a、数组类型array。
b、对象类型object。
c、嵌套类型nested object。
3)、地理位置数据类型。
a、geo_point。
b、geo_shape。
4)、专用类型。
a、记录ip地址ip。
b、实现自动补全completion。
c、记录分词数token_count。
d、记录字符串hash值murmur3。
e、percolator。
f、join。
5)、多字段特性multi_fields。
允许对同一个字段采用不同得配置,比如分词,常见例子如对人名实现拼音搜索。只需要在人名种新增一个子字段为pinyin即可。
18、Dynamic Mapping,es可以自动识别文档字段类型,从而降低用户使用成本,如下所示。
es是依靠json文档的字段类型来实现自动识别字段类型,支持的类型如下所示:
19、dynamic日期与数字识别。
1)、日期的自动识别可以自行配置日期格式,以满足各种需求。
a、默认是["strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z || yyyy/MM/dd Z"]
b、strict_date_optional_time是ISO datetime的格式,完整格式类似下面所示:
YYYY-MM-DDThh:mm:ssTZD。例如,1994-07-12T19:20:30+01:00
c、dynamic_date_formats可以自定义日期类型。该参数是在type参数下一级的参数。
d、date_detection可以关闭日期自动识别的机制。该参数是在type参数下一级的参数。
2)、字符串是数字的时候,默认不会自动识别为整数,因为字符串中出现数字是完全合理的。
a、numeric_detection可以开启字符串中数字的自动识别。该参数是在type参数下一级的参数。
20、dynamic-template(动态模板)简介。
1)、允许根据es自动识别的数据类型、字段名等来动态设定字段类型,可以实现如下效果。
a、所有字符串类型都设定为keyword类型,即默认不分词的。
b、所有以message开头的字段都设定为text类型,即分词。
c、所有以long_开头的字段都设定为long类型。
d、所有自动匹配为double类型都设定为float类型,以节省空间。
2)、匹配规则一般有如下几个参数。
a、match_mapping_type匹配es自动识别的字段类型,如boolean、long、string等等。
b、match,unmatch匹配字段名。
c、path_match,path_unmatch匹配路径。
3)、字符串默认使用keyword类型。es默认会为字符串设置为text类型,并增加一个keyword的子字段。
字符串默认使用keyword类型。es默认会为字符串设置为text类型,并增加一个keyword的子字段。
动态模板映射以后是这样的。
以message开头的字段都设置为text类型。 dynamic_templates,数组,可以指定多个匹配规则。可以设定多个模板,执行顺序,从上到下的。
21、自定义mapping的建议。
自定义mapping的操作步骤如下所示。
a、写一条文档到es的临时索引中,获取es自动生成的mapping。
b、修改步骤a得到的mapping,自定义相关配置。
c、使用步骤b的mapping创建实际所需索引。
最方便的是根据动态模板进行创建。
22、索引模板。
a、索引模板,英文为Index Template,主要用于在新建索引的时候自动应用预先设定的配置。简化索引创建的操作步骤。
可以设定索引的配置和mapping。
可以有多个模板,根据order设置,order大的覆盖小的配置。
aaarticlea/jpeg;base64,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" alt="" />
作者:别先生
博客园:https://www.cnblogs.com/biehongli/
如果您想及时得到个人撰写文章以及著作的消息推送,可以扫描上方二维码,关注个人公众号哦。
Elasticsearch 6.x版本全文检索学习之倒排索引与分词、Mapping 设置的更多相关文章
- Elasticsearch 6.x版本全文检索学习之分布式特性介绍
1.Elasticsearch 6.x版本全文检索学习之分布式特性介绍. 1).Elasticsearch支持集群默认,是一个分布式系统,其好处主要有两个. a.增大系统容量,如内存.磁盘.使得es集 ...
- Elasticsearch 6.x版本全文检索学习之Search API
Elasticsearch 6.x版本全文检索学习之Search API. 1).Search API,实现对es中存储的数据进行查询分析,endpoind为_search,如下所示. 方式一.GET ...
- Elasticsearch 6.x版本全文检索学习之数据建模
1.什么是数据建模. 答:数据建模,英文为Data Modeling,为创建数据模型的过程.数据模型Data Mdel,对现实世界进行抽象描述的一种工具和方法,通过抽象的实体及实体之间联系的形式去描述 ...
- Elasticsearch 6.x版本全文检索学习之集群调优建议
1.系统设置要到位,遵照官方建议设置所有的系统参数. https://www.elastic.co/guide/en/elasticsearch/reference/6.7/setup.html 部署 ...
- Elasticsearch 6.x版本全文检索学习之聚合分析入门
1.什么是聚合分析? 答:聚合分析,英文为Aggregation,是es除搜索功能外提供的针对es数据做统计分析的功能.特点如下所示: a.功能丰富,提供Bucket.Metric.Pipeline等 ...
- Elasticsearch全文检索学习
ElasticSearch官方网址:https://www.elastic.co ElasticSearch官方网址(中文):https://www.elastic.co/cn/ Elasticsea ...
- SpringBoot整合ElasticSearch实现多版本的兼容
前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...
- Elasticsearch 1.X 版本Java插件开发
接上一篇<Elasticsearch 2.X 版本Java插件开发简述> 开发1.X版本elasticsearch java插件与2.X版本有一些不同,同时在安装部署上也有些不同,主要区别 ...
- Elasticsearch 2.X 版本Java插件开发简述
1:elasticsearch插件分类简述 2:Java插件开发要点 3:如何针对不同版本elasticsearch提供多版本的插件 4:插件具有外部依赖时遇到的一些问题(2016-09-07更新) ...
随机推荐
- java 主动信任证书
java 主动信任证书 SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, mid.toCharArray() ...
- ubuntu vscode 写一个C++程序
博客转载:https://blog.csdn.net/weixin_43374723/article/details/84064644 Visual studio code是微软发布的一个运行于 Ma ...
- salt-api 获取服务器信息,minion批量执行cmd命令
import requests import json try: import cookielib except: import http.cookiejar as cookielib # 使用url ...
- Dubbo学习笔记-Zookeeper连接失败
1. 检查服务器的zookeeper端口是否开放,默认为2181 2. 检查zookeeper是否运行成功 # 进入bin文件夹 cd /usr/local/zookeeper/bin # 重启 zk ...
- PHP目前常见的五大运行模式
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/xujingzhong0077/artic ...
- python frozenset
1. 一旦初始化,并不可以改变 2. 可以作为字典的键值
- java 与 iOS 平台概念比较
java oc/swift jvm iphone jre runtime? jdk ios SDK spring xcode 生成的应用模版 服务器(tomcat) 系统的事件调度派发部分 class ...
- 随机的标识符GUID
Guid guid = Guid.NewGuid();Console.WriteLine(guid.ToString());
- 松软科技带你学开发:SQL--FIRST() 函数
FIRST() 函数(原文链接 松软科技:www.sysoft.net.cn/Article.aspx?ID=3731) FIRST() 函数返回指定的字段中第一个记录的值. 提示:可使用 ORDER ...
- JQuery Deferred对象使用小结
场景描述 如下,打开页面时,获取默认选中的项目,同时也会初始化Combobox下拉框下拉列表数据 问题描述 获取默认选中项目及下拉列表的js函数位于common.js文件,类似如下: // 根据项目类 ...