安装好ELK后,默认的elasticsearch用的分词器为standard analyzer,所以我们的异常“org.springframework.jdbc.BadSqlGrammarException”不能通过BadSqlGrammarException搜索到。
以“one.two.three.+four”为例子,如果用standard analyzer,只有两个term,用simple将有4个term
https://discuss.elastic.co/t/dot-analyzer/3635/2
default analyzer,即standard analyzer
http://localhost:9200/twitter/_analyze?text=one.two.three.+four&pretty=1'
{
"tokens" : [ {
"token" : "one.two.three",
"start_offset" : 0,
"end_offset" : 14,
"type" : "",
"position" : 1
}, {
"token" : "four",
"start_offset" : 15,
"end_offset" : 19,
"type" : "",
"position" : 2
} ]
}
改用simple analyzer,有4个term被分出来:
http://localhost:9200/twitter/_analyze?analyzer=simple&text=one.two.three.+four&pretty=1
'
{
"tokens" : [ {
"token" : "one",
"start_offset" : 0,
"end_offset" : 3,
"type" : "word",
"position" : 1
}, {
"token" : "two",
"start_offset" : 4,
"end_offset" : 7,
"type" : "word",
"position" : 2
}, {
"token" : "three",
"start_offset" : 8,
"end_offset" : 13,
"type" : "word",
"position" : 3
}, {
"token" : "four",
"start_offset" : 15,
"end_offset" : 19,
"type" : "word",
"position" : 4
} ]
}
分词器可以为每个query指定,每个field或者每个index。refer to :https://www.elastic.co/guide/en/elasticsearch/reference/current/analyzer.html
es选择分词器的顺序为:
索引阶段
-An analyzer named default in the index settings.
-The standard analyzer.
查询阶段
-The search_analyzer defined in the field mapping.
-The analyzer defined in the field mapping.
-An analyzer named default_search in the index settings.
-An analyzer named default in the index settings.
-The standard analyzer.
我们设置logstash过来的数据对message field指定为simple analyzer:
PUT _template/logstash { "template" : "logstash-*", "mappings": { "test": { "properties": { "message": { "type": "text", "analyzer": "simple" } } } } }
创建一个名为logstash的template,它应用于所有名为logstash-*的index,为这个template建了一个名为test的mapping,该mapping下的message filed为文本类型,使用的analyze为simple。
OK,更改了名为logstash-*的index的analyzer为simple analyzer。测试一下:
1)在logstash监听的log中增加一条数据:
2)看到elasticsearch的console打出一行日志,上面这条数据已经被索引,并使用了我们定义的template logstash,以及我们的mapping test:
*关于 shards [5]/[1]:
By default, each index in Elasticsearch is allocated 5 primary shards and 1 replica which means that if you have at least two nodes in your cluster, your index will have 5 primary shards and another 5 replica shards (1 complete replica) for a total of 10 shards per index.
refer to:https://www.elastic.co/guide/en/elasticsearch/reference/current/_basic_concepts.html#getting-started-shards-and-replicas
3)测试通过“ jdbc”在message field来搜索:
GET /_search { "query": { "query_string": { "query": "jdbc", "fields": [ "message" ] } } }
可以看到搜索成功:
{ "took": 0, "timed_out": false, "_shards": { "total": 6, "successful": 6, "failed": 0 }, "hits": { "total": 1, "max_score": 1.1290016, "hits": [ { "_index": "logstash-2017.07.06", "_type": "testlogs", "_id": "AV0YmlmqLzl7sqCPLrgd", "_score": 0.28582606, "_source": { "path": "/Users/jo/lp_logs/error.log", "@timestamp": "2017-07-06T15:52:34.975Z", "@version": "1", "host": "Zhuos-MacBook-Pro.local", "message": "\torg.springframework.jdbc.BadSqlGrammarException: ### Error querying database.", "type": "testlogs" } } ] } }
在Kibana中搜索message:jdbc即可获得结果。
但是比较奇怪的现象是,必须指定message域才能查出来。而message中的一些其他term,比如“Error”就可以不指定message直接查出来。
相关推荐
Elasticsearch(ES)是一款功能强大的全文搜索引擎,而分析器在ES中扮演着至关重要的角色,它负责将用户输入的文本进行预处理,包括分词、词形还原等步骤。`elasticsearch-analysis-ik`是一个专为Elasticsearch设计...
5. **自定义字典**:将自定义的字典文件放置在 Elasticsearch 的数据目录下,并在配置文件中指定路径,例如: ``` index.analysis.dict.user_dict: /path/to/your/dictionary.dic ``` **四、使用场景与优势** 1...
`elasticsearch-jieba-plugin`正是将jieba分词库与Elasticsearch进行了深度融合,使得ES在处理中文文本时能展现出卓越的性能。 安装此插件的过程简单明了。首先,下载`elasticsearch-jieba-plugin 8.8.2.zip`压缩包...
Elasticsearch(简称ES)是一款基于Lucene的分布式、RESTful搜索引擎,广泛应用于日志收集、数据分析等领域,是ELK(Elasticsearch、Logstash、Kibana)堆栈的重要组成部分。在处理中文数据时,合理的分词对于提升...
在日志收集和数据分析领域,Elasticsearch(简称ES)扮演着重要的角色。作为一个强大的全文搜索引擎,Elasticsearch允许用户通过简单的API进行数据索引、搜索、分析和可视化。然而,为了更好地处理中文等复杂语言,...
Elasticsearch(ES)是一款流行的开源全文搜索引擎,常用于日志收集、数据分析和实时搜索等场景。在处理中文文本时,分词器插件是必不可少的组件,它能够将中文字符串分解为有意义的词汇单元,以提升搜索的准确性和...
安装完成后,需要在 Elasticsearch 的配置文件(如 `elasticsearch.yml`)中指定使用 Ik 分词器,并可能需要配置相应的参数,例如自定义词典路径。 压缩包中的 "elasticsearchik" 文件可能是 Ik 分词器的配置文件、...
cp elasticsearch-analysis-ik-1.2.5.jar ES_HOME/plugins/analysis-ik/ ``` 同时,在 ElasticSearch 的配置文件 `elasticsearch.yml` 中添加以下内容来启用 ik 分词器: ```yaml index: analysis: analyzer: ik...
- **索引创建与更新**:使用 Elasticsearch 的 API 创建索引时,可以指定 `analyzer` 参数为 `ik_max_word` 或 `ik_smart` 来使用 IK Analyzer。 - **搜索查询**:在查询语句中,可以使用 `match`、`multi_match` ...
在日志收集和分析领域,Elasticsearch(简称ES)是广泛应用的搜索引擎和数据分析工具,它与Logstash(数据采集)、Kibana(数据可视化)共同构成了ELK(Elasticsearch、Logstash、Kibana)栈。对于中文处理,分词器...
Elasticsearch 内置了多种分词器,如标准分词器(Standard Analyzer)、关键词分词器(Keyword Analyzer)和中文分词器(Smart Chinese Analyzer)等。这些分词器可以根据不同的语言和应用场景进行定制,以确保搜索...
IK分词器是针对Elasticsearch设计的一款强大的中文分词插件,其全称为"elasticsearch-analysis-ik"。在Elasticsearch中,分词器的作用至关重要,它负责将用户输入的文本进行词汇切分,以便进行后续的搜索和分析操作...
6. **多字段分析**:在 Elasticsearch 索引配置中,可以为不同的字段指定不同的分析器,以满足不同字段的分析需求。 **四、安装与配置** 1. **下载**:从官方仓库或其他可信来源下载 elasticsearch-analysis-ik-...
在搜索引擎和文本分析领域,Elasticsearch(简称ES)是一个广泛使用的开源解决方案,它提供了强大的全文检索、实时分析以及高可用性。为了更好地处理中文文档,Elasticsearch 提供了多种插件,其中最著名的就是 IK ...
在创建索引或更新映射时,指定我们定义的"pinyin"分析器,即可让Elasticsearch在处理中文时使用拼音策略。 总的来说,"elasticsearch-analysis-pinyin-7.12.1"插件是Elasticsearch处理中文文本的强大工具,通过拼音...
**Elasticsearch 分析插件 IK 中文分词器详解** Elasticsearch 是一个功能强大的全文搜索引擎,广泛应用于数据检索和分析。为了更好地处理中文文本,Elasticsearch 提供了各种分词器,其中最常用的就是 IK ...
elasticsearch-analysis-ik插件由IK Analyzer团队开发,IK即“IntelligentKeyword”的缩写,寓意其具备智能化的分词能力。版本7.4.2是针对Elasticsearch 7.4.2版本的适配,确保与主程序的兼容性和稳定性。这个插件...
3. **配置分词器**:在 Elasticsearch 的 mapping 中指定使用 IK 分词器,例如: ``` "analyzer": "ik_max_word", ``` 4. **自定义词典**:根据需求,可以在 config 目录下修改或添加自定义词典文件。 四、在...
Elasticsearch(ES)是一种流行的开源全文搜索引擎,基于Lucene库构建,广泛应用于大数据分析、日志检索和实时搜索等领域。其核心特性包括分布式、可扩展性和高灵活性。在处理中文文本时,Elasticsearch需要依赖特定...
IK分词器全称为"Intelligent Chinese Analyzer for Elasticsearch",它由开源社区开发并维护,旨在为Elasticsearch提供强大的中文处理能力。IK插件支持动态词典加载,能自定义扩展词库,且具备丰富的分词策略,如全...