analysis
基本概念
===
全文搜索引擎会用某种算法对要建索引的文档进行分析, 从文档中提取出若干Token(词元), 这些算法称为Tokenizer(分词器), 这些Token会被进一步处理, 比如转成小写等, 这些处理算法被称为Token Filter(词元处理器), 被处理后的结果被称为Term(词), 文档中包含了几个这样的Term被称为Frequency(词频)。 引擎会建立Term和原文档的Inverted Index(倒排索引), 这样就能根据Term很快到找到源文档了。 文本被Tokenizer处理前可能要做一些预处理, 比如去掉里面的HTML标记, 这些处理的算法被称为Character Filter(字符过滤器), 这整个的分析算法被称为Analyzer(分析器)。
ES内置了很多Analyzer, 还有很多第三方的Analyzer插件, 比如一些处理中文的Analyzer(中文分词)。
analyzer、 tokenizer、 filter可以在elasticsearch.yml 配置, 下面是配置例子
```
index :
analysis :
analyzer :
standard :
type : standard
stopwords : [stop1, stop2]
myAnalyzer1 :
type : standard
stopwords : [stop1, stop2, stop3]
max_token_length : 500
# configure a custom analyzer which is
# exactly like the default standard analyzer
myAnalyzer2 :
tokenizer : standard
filter : [standard, lowercase, stop]
tokenizer :
myTokenizer1 :
type : standard
max_token_length : 900
myTokenizer2 :
type : keyword
buffer_size : 512
filter :
myTokenFilter1 :
type : stop
stopwords : [stop1, stop2, stop3, stop4]
myTokenFilter2 :
type : length
min : 0
max : 2000
```
analyzer
===
ES内置若干analyzer, 另外还可以用内置的character filter, tokenizer, token filter组装一个analyzer(custom analyzer), 比如
```
index :
analysis :
analyzer :
myAnalyzer :
tokenizer : standard
filter : [standard, lowercase, stop]
```
如果你要使用第三方的analyzer插件,需要先在配置文件elasticsearch.yml中注册, 下面是配置IkAnalyzer的例子
```
index:
analysis:
analyzer:
ik:
alias: [ik_analyzer]
type: org.elasticsearch.index.analysis.IkAnalyzerProvider
```
当一个analyzer在配置文件中被注册到一个名字(logical name)下后,在mapping定义或者一些API里就可以用这个名字来引用该analyzer了,比如
```
"message": {
"type": "string",
"indexAnalyzer": "ik",
"searchAnalyzer": "ik"
}
```
如果没有指定索引和搜索用的analyzer,ES会用默认的analyzer来处理,也就是名字(logical name)为`default`, `default_index`, `default_search`的analyzer。
从名字可以看出来,`default`是索引和搜索时用的默认的analyzer,`default_index`是索引时用的默认的analyzer,
`default_search`是查询时用的默认analyzer。
下面是在elasticsearch.yml中配置默认analyzer的例子
```
index:
analysis:
analyzer:
default_index:
tokenizer: standard
filter: [standard, lowercase, my_synonym, my_snow]
default_search:
tokenizer: standard
filter: [standard, lowercase, stop]
```
或者用这种格式
```
index.analysis.analyzer.default.type : "mmseg"
```
一个analyzer可以起若干别名,比如在下面的例子中,standard analyzer可以用alias1或者alias2来引用
```
index :
analysis :
analyzer。 :
standard :
alias: [alias1, alias2]
type : standard
stopwords : [test1, test2, test3]
```
下面是内置的一些analyzer。
| analyzer | logical name | description |
| ----------------------|:-------------:| :-----------------------------------------|
| standard analyzer | standard | standard tokenizer, standard filter, lower case filter, stop filter |
| simple analyzer | simple | lower case tokenizer |
| stop analyzer | stop | lower case tokenizer, stop filter |
| keyword analyzer | keyword | 不分词,内容整体作为一个token(not_analyzed) |
| pattern analyzer | whitespace | 正则表达式分词,默认匹配\W+ |
| language analyzers | [lang](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html) | 各种语言 |
| snowball analyzer | snowball | standard tokenizer, standard filter, lower case filter, stop filter, snowball filter |
| custom analyzer | custom | 一个Tokenizer, 零个或多个Token Filter, 零个或多个Char Filter |
tokenizer
===
ES内置的tokenizer列表。
| tokenizer | logical name | description |
| ----------------------|:-------------:| :-------------------------------------|
| standard tokenizer | standard | |
| edge ngram tokenizer | edgeNGram | |
| keyword tokenizer | keyword | 不分词 |
| letter analyzer | letter | 按单词分 |
| lowercase analyzer | lowercase | letter tokenizer, lower case filter |
| ngram analyzers | nGram | |
| whitespace analyzer | whitespace | 以空格为分隔符拆分 |
| pattern analyzer | pattern | 定义分隔符的正则表达式 |
| uax email url analyzer| uax_url_email | 不拆分url和email |
| path hierarchy analyzer| path_hierarchy| 处理类似`/path/to/somthing`样式的字符串|
token filter
===
ES内置的token filter列表。
| token filter | logical name | description |
| ----------------------|:-------------:| :-------------------------------------|
| standard filter | standard | |
| ascii folding filter | asciifolding | |
| length filter | length | 去掉太长或者太短的 |
| lowercase filter | lowercase | 转成小写 |
| ngram filter | nGram | |
| edge ngram filter | edgeNGram | |
| porter stem filter | porterStem | 波特词干算法 |
| shingle filter | shingle | 定义分隔符的正则表达式 |
| stop filter | stop | 移除 stop words |
| word delimiter filter | word_delimiter| 将一个单词再拆成子分词 |
| stemmer token filter | stemmer | |
| stemmer override filter| stemmer_override| |
| keyword marker filter | keyword_marker| |
| keyword repeat filter | keyword_repeat| |
| kstem filter | kstem | |
| snowball filter | snowball | |
| phonetic filter | phonetic | [插件](https://github.com/elasticsearch/elasticsearch-analysis-phonetic) |
| synonym filter | synonyms | 处理同义词 |
| compound word filter | dictionary_decompounder, hyphenation_decompounder | 分解复合词 |
| reverse filter | reverse | 反转字符串 |
| elision filter | elision | 去掉缩略语 |
| truncate filter | truncate | 截断字符串 |
| unique filter | unique | |
| pattern capture filter| pattern_capture| |
| pattern replace filte | pattern_replace| 用正则表达式替换 |
| trim filter | trim | 去掉空格 |
| limit token count filter| limit | 限制token数量 |
| hunspell filter | hunspell | 拼写检查 |
| common grams filter | common_grams | |
| normalization filter | arabic_normalization, persian_normalization | |
character filter
===
ES内置的character filter列表
| character filter | logical name | description |
| --------------------------|:-------------:| :-------------------------|
| mapping char filter | mapping | 根据配置的映射关系替换字符 |
| html strip char filter | html_strip | 去掉HTML元素 |
| pattern replace char filter| pattern_replace| 用正则表达式处理字符串 |
icu plugin
===
[icu analysis 插件](https://github.com/elasticsearch/elasticsearch-analysis-icu)
http://www.csdn123.com/html/itweb/20131030/195710.htm
- 浏览: 5053179 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (2844)
- java (1094)
- hadoop (37)
- jvm (39)
- hbase (11)
- sql (25)
- 异常 (83)
- div css (6)
- 数据库 (95)
- 有趣的code (15)
- struts2 (6)
- spring (124)
- js (44)
- 算法 (65)
- linux (36)
- hibernate (7)
- 中间件 (78)
- 设计模式 (2)
- 架构 (275)
- 操作系统 (91)
- maven (35)
- tapestry (1)
- mybatis (9)
- MQ (101)
- zookeeper (18)
- 搜索引擎,爬虫 (208)
- 分布式计算 (45)
- c# (7)
- 抓包 (28)
- 开源框架 (45)
- 虚拟化 (12)
- mongodb (15)
- 计算机网络 (2)
- 缓存 (97)
- memcached (6)
- 分布式存储 (13)
- scala (5)
- 分词器 (24)
- spark (104)
- 工具 (23)
- netty (5)
- Mahout (6)
- neo4j (6)
- dubbo (36)
- canal (3)
- Hive (10)
- Vert.x (3)
- docker (115)
- 分布式追踪 (2)
- spring boot (5)
- 微服务 (56)
- 淘客 (5)
- mesos (67)
- php (3)
- etcd (2)
- jenkins (4)
- nginx (7)
- 区块链 (1)
- Kubernetes (92)
- 驾照 (1)
- 深度学习 (15)
- JGroups (1)
- 安全 (5)
- 测试 (16)
- 股票 (1)
- Android (2)
- 房产 (1)
- 运维 (6)
- 网关 (3)
最新评论
-
明兜3号:
部署落地+业务迁移 玩转k8s进阶与企业级实践技能(又名:Ku ...
Kubernetes系统常见运维技巧 -
q328965539:
牛掰啊 资料收集的很全面
HDFS小文件处理解决方案总结+facebook(HayStack) + 淘宝(TFS) -
guichou:
fluent挂载了/var/lib/kubelet/pods目 ...
kubernetes上部署Fluentd+Elasticsearch+kibana日志收集系统 -
xu982604405:
System.setProperty("java.r ...
jmx rmi 穿越防火墙问题及jmxmp的替代方案 -
大漠小帆:
麻烦问下,“获取每个Item相似性最高的前N个Item”,这个 ...
协同过滤推荐算法在MapReduce与Spark上实现对比
发表评论
-
ElasticSearch Groovy脚本远程代码执行漏洞分析(CVE-2015-1427) (附exp)
2017-10-16 19:08 1400ElasticSearch是一个JAVA开发的搜索分析引擎。 ... -
postman进行http接口测试
2017-09-26 17:21 997HTTP的接口测试工具有 ... -
selenium 使用经验总结
2017-08-20 16:21 690slenium 踩过很多坑总结一下1.版本问题浏览器和sele ... -
selenium chrome 浏览器闪退
2017-08-20 10:37 2789selenium 3.5.1 chrome 43 chrom ... -
selenium 浏览器版本
2017-08-19 22:19 859今天把手头有的一些关于selenium测试的资源整理了一下, ... -
geckodriver 关闭日志
2017-08-19 18:41 1900You can define the desired log ... -
selenium与firefox版本不兼容
2017-08-19 16:54 1729报错信息: org.openqa.selenium.fir ... -
解决Selenium与firefox浏览器版本不兼容问题
2017-08-19 16:41 1782因为在用Java打开firefox浏览器的时候报错 org ... -
剖析Elasticsearch集群系列之二:分布式的三个C、translog和Lucene段
2017-08-08 17:00 648转载:http://www.infoq.com/cn/art ... -
分布式搜索elasticsearch 搜索结果排序不一致性问题
2017-08-08 16:52 1402想象这一种情况,如果搜索结果中得分出现相同的情况下:由于搜索 ... -
多个ElasticSearch Cluster的一致性问题
2017-08-08 16:51 790本篇讨论同时使用多个ES Cluster进行搜索的时候,如何 ... -
WEB渗透测试之三大漏扫神器
2017-07-07 11:11 2458通过踩点和查点,已经能确定渗透的目标网站。接下来可以选择使用 ... -
淘宝 OAuth2.0 的登录验证与授权
2017-07-07 10:13 1735获取授权码Code应用在要求获取用户信息的时候,首先引导用户 ... -
Jsoup中getElementsByClass中className有空格处理
2017-06-17 16:31 2430今天在做网络爬虫的作业是,用jsoup解析html网页时要获 ... -
HttpClient4 Post XML到一个服务器上
2017-06-14 16:16 660HttpClient4 Post XML到一个服务器上 ... -
Android安装Fiddler证书抓取App的HTTPS流量
2017-06-14 15:45 2481情况是这样的:某Android App采用HTTPS协议和服 ... -
使用Charles进行https抓包
2017-06-07 16:16 1678Charles安装 抓HTTPS包 证书 ... -
如何使用charles对Android Https进行抓包
2017-06-07 14:38 1501原理 man-in-the-middle.png ... -
Selenium WebDriver 中鼠标事件
2017-05-28 10:57 794鼠标点击操作 鼠标点击事件有以下几种类型: 清单 1 ... -
获取真实IP的方法,以及伪造IP的例子代码
2017-05-04 18:06 1751内容提要:这种情况下同样透露了客户端是使用了代理服务器,但 ...
相关推荐
最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip
在Elasticsearch中安装插件,通常通过命令行工具执行,如`bin/elasticsearch-plugin install file:///path/to/elasticsearch-analysis-pinyin-7.4.0.zip`,这将自动处理所有依赖并安装插件。 在配置方面,开发者...
Elasticsearch的IK分词器为中文全文检索提供了强大的支持,通过"elasticsearch-analysis-ik-7.16.3.zip"插件的安装和配置,我们可以轻松地在Elasticsearch中实现对中文文本的高效分词。无论是日志分析、内容推荐还是...
"elasticsearch-analysis-ik"是针对Elasticsearch的一个中文分词插件,它的主要功能是提供高效、精准的中文分词能力,使得Elasticsearch能够更好地理解和处理中文文本数据。 在Elasticsearch 7.10.0版本中,...
在给定的标题和描述中,提到了两个重要的插件:"elasticsearch-analysis-pinyin-7.10.1" 和 "elasticsearch-analysis-ik-7.10.1"。 **1. elasticsearch-analysis-pinyin-7.10.1** 这个插件是Elasticsearch针对中文...
"elasticsearch-analysis-ik-7.6.2.zip" 是针对Elasticsearch 7.6.2版本的一个专门用于中文分词的插件,其目的是优化对中文文本的索引和查询性能。 IK分析器是Elasticsearch社区中非常流行的一个中文分词插件,由...
"elasticsearch-analysis-ik"是ES中最受欢迎的中文分词器之一,专为提升中文文本分析性能而设计。本文将深入探讨"elasticsearch-analysis-ik-7.3.2"这个版本,以及与其相关的技术细节。 首先,"elasticsearch-...
Elasticsearch-analysis-ik 在各种需要中文搜索的场景中大显身手,如电子商务、社交媒体、新闻资讯、文档检索等。通过精准的分词,它可以提升搜索的精度,帮助用户快速找到目标信息。 **总结** Elasticsearch-...
Elasticsearch 分析插件是增强其搜索和分析能力的重要工具,其中`elasticsearch-analysis-ik`是一款广泛使用的中文分词插件。标题中的"elasticsearch-analysis-ik-7.6.1.zip"指的是该插件的7.6.1版本,它专为Elastic...
本文将深入探讨一个名为"elasticsearch-analysis-ik-6.8.2.zip"的插件,它是专为Elasticsearch设计的IK分词器的版本。 IK分词器(Intelligent Chinese Analyzer for Elasticsearch)是Elasticsearch社区中最受欢迎...
"elasticsearch-analysis-ik" 是 Elasticsearch 的一个重要插件,专为中文分词处理设计,它旨在提供更强大的中文分析能力。"7.8.0" 版本是这个插件的最新更新,确保与 Elasticsearch 的相应版本兼容并提供了最新的...
在Elasticsearch中使用IK分词器,首先需要将`elasticsearch-analysis-ik-8.1.3.jar`文件拷贝到Elasticsearch的plugins目录下,然后重启Elasticsearch服务。安装完成后,可以在Elasticsearch的配置文件(如`elastic...
Elasticsearch 分析插件 IK 是一款为 Elasticsearch 设计的高性能中文分词器,它的全称为 "elasticsearch-analysis-ik"。此版本是 7.4.2,专为 Elasticsearch 7.4.2 版本优化。在中文文档处理中,分词是至关重要的...
`elasticsearch-analysis-ik`插件将IK分词器无缝地融入Elasticsearch,使得用户在使用ES时可以直接调用IK的分词能力。安装该插件后,可以在ES的索引设置中配置IK分析器,从而实现对中文文档的高效检索。 **三、...
`elasticsearch-analysis-ik` 是一个专门针对 Elasticsearch 的中文分词插件,6.8.0 版本与 Elasticsearch 6.8.0 完全兼容。IK 分词器提供了丰富的配置选项,可以自定义分词规则,支持热更新词库,能更好地处理中文...
这个最新的版本 "elasticsearch-analysis-ik-7.13.4.zip" 提供了针对 Elasticsearch 7.13.4 的优化和增强,旨在提高中文文本处理的效率和准确性。IK 分词器在处理中文词汇时,能够根据上下文信息进行智能切词,从而...
这个压缩包 "elasticsearch-analysis-ik-7.9.0.zip" 包含了该插件及其依赖库,使得在处理中文文档时能够进行更精确的全文检索。 首先,我们要理解 Elasticsearch 的核心概念。Elasticsearch 是一个基于 Lucene 的...
这个最新版本的压缩包 "elasticsearch-analysis-ik-7.14.1.zip" 包含了必要的组件和配置文件,以确保在 Elasticsearch 7.14.1 版本中能够顺利集成和运行。 首先,让我们了解一下 Elasticsearch。Elasticsearch 是一...
为了更好地支持中文处理,Elasticsearch提供了丰富的插件,其中"elasticsearch-analysis-pinyin-7.12.1"是一款专门用于中文分词的拼音分析器插件,适用于7.12.1版本的Elasticsearch。本文将深入探讨这款插件的功能、...