问题
在处理elasticsearch的时候,通常需要不断地调整索引的配置,以期达到期望的效果。最近在试验各种analyzer的效果的时候就碰到一个问题:修改索引配置后,并不能立即生效。后来才发现需要先关闭索引,然后再打开才能生效。
过程
下面是我的过程:
创建索引:
curl -XPUT http://localhost:9200/analyzetest/ -d ' { "settings":{ "analysis":{ "analyzer":{ "testpatternanalyzer":{ "type":"pattern", "pattern":"\\s+" } } } } } '
测试分析器效果:
curl -Xpost http://localhost:9200/analyzetest/_analyze?analyzer=testpatternanalyzer -d ' hello elasticsearch '
效果达成,试验一个自定义的分析器,该分析器采用nGram的tokenizer:
更新索引配置:
curl -XPUT http://localhost:9200/analyzetest/_settings -d ' { "analysis":{ "analyzer":{ "acompoundenglish":{ "type":"custom", "tokenizer":"my_ngram_tokenizer", "filter":[ "my_ngram_filter" ] } }, "tokenizer":{ "my_ngram_tokenizer":{ "type":"nGram", "min_gram":1, "max_gram":3 } }, "filter":{ "my_ngram_filter":{ "type":"nGram", "min_gram":1, "max_gram":3 } } } } '
返回:
{ "ok": true }
测试效果:
curl -Xpost http://localhost:9200/analyzetest/_analyze?analyzer=compoundenglish -d ' english '
结果返回的token只有一个:“english”。这明显不是nGram应该达到的效果。反复试验过几次均不见效果。
通过
curl -Xget http://localhost:9200/analyzetest/_settings
发现第二次设置的索引配置根本没有出现。可是更新配置的时候明名返回成功的。
原来(https://groups.google.com/forum/#!msg/elasticsearch/dVPq9GAh8-g/Gs3Lg7Zjt1QJ)需要先关闭索引后才能生效:
kimchy 写道
It might just be the number of replicas setting, where it should handle things better in case of a closed index. All other settings should work. Open an issue for the number of replica settings update problem on a closed index.
通过
curl -XPOST http://localhost:9200/analyzetest/_close curl -XPOST http://localhost:9200/analyzetest/_open
发现更新过的配置生效了,分析器也返回了期望的效果。
相关推荐
例如,将`vm.max_map_count`设置为655360,并通过`sysctl -p`使改动立即生效。 索引性能调优包括合理设置索引分片数和副本数。索引分片数应为节点数的整数倍,初始导入时副本数设为0,生产环境中建议设置为1。单...
- **重启Elasticsearch**:完成上述步骤后,重启Elasticsearch服务以使更改生效。 5. **验证安装** 使用Elasticsearch的命令行工具或通过HTTP API,检查插件是否成功安装。运行以下命令: ``` curl -X GET '...
在使用`elasticsearch-jieba-plugin`时,你需要配置Elasticsearch的索引设置,指定使用jieba分词器。在创建索引或者更新现有索引的映射(mapping)时,可以通过设置`analyzer`字段来指定分词器。例如: ```json PUT...
3. 安装完成后,重启 Elasticsearch 服务以使插件生效。 **使用 Head 插件** 1. 在浏览器中输入 `http://localhost:9200/_plugin/head/`,你将看到 Head 插件的界面。 2. 通过 Head 插件,你可以监控集群的健康...
安装完成后,无需重启 Elasticsearch 服务,Head 插件就已经生效。只需在浏览器中输入 `http://localhost:9200/_plugin/head/`(假设 Elasticsearch 运行在本地且默认端口为 9200)即可访问到 Head 插件的界面。 ##...
4. 启动:重启Elasticsearch和Ranger服务,确保插件生效。 配置Ranger Elasticsearch插件涉及的主要部分有: - 在Ranger Admin界面创建新的服务定义,选择Elasticsearch类型,并配置相关参数,如Elasticsearch节点...
3. 启动:重启Elasticsearch服务以使配置生效。 4. 测试:通过Elasticsearch的API进行测试,验证分词效果,如使用`GET /_analyze`接口。 除了基本功能,IK分词插件还提供了丰富的扩展性,用户可以通过编写自定义...
修改配置后,需要重启Elasticsearch服务以使新的配置生效。可以使用`docker restart es`命令来重启容器内的服务。 接着,我们将配置Elasticsearch的密码: 1. **检查X-Pack安装**: 进入Elasticsearch容器的`/...
Elasticsearch(简称ES)是一款基于Lucene的分布式、RESTful搜索引擎,广泛应用于日志收集、数据分析等领域,是ELK(Elasticsearch、Logstash、Kibana)堆栈的重要组成部分。在处理中文数据时,合理的分词对于提升...
**Elasticsearch Analysis IK 7.10.0 分词器详解** Elasticsearch 分词器是搜索引擎核心组件之一,负责将输入的文本拆分成可搜索的独立单元——词语。在中文环境中,这个过程尤为重要,因为中文句子由多个汉字组成...
3. 重启Elasticsearch服务以使插件生效。 4. 配置索引模板或索引设置,指定使用`pinyin`分析器。 在实际应用中,用户还需要根据自己的需求配置Elasticsearch的索引映射,将需要进行拼音分析的字段指定为使用`...
总结来说,"elasticsearch-analysis-stconvert"插件是Elasticsearch处理简体和繁体中文的关键工具,它通过分析器的定制,使得简体用户无需额外操作就能搜索到包含繁体内容的信息,极大地提升了用户体验。对于那些...
### Elasticsearch 安装与 ElasticSearch-Head 安装配置详解 #### 一、Elasticsearch 环境准备 **1. Java 环境配置** - **下载 JDK**:根据官方要求,Elasticsearch 5.* 版本及以上需要 JDK 1.8。可从官方链接...
1. 配置分词器:在Elasticsearch的索引模板或映射设置中,添加IK分词器配置,例如: ```json { "settings": { "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "ik_max_word", "filter": [...
修改完配置文件后,需要重启 Elasticsearch 服务以使配置生效。 #### 四、使用案例 下面通过一系列具体的步骤演示如何使用 Elasticsearch: 1. **启动 Elasticsearch**: 在 Elasticsearch 的安装目录下,运行...
3. **重启 Elasticsearch**:重启服务以使插件生效。 4. **配置**:在 Elasticsearch 的配置文件 `elasticsearch.yml` 中添加或修改分析器配置。 例如: ```yaml analysis: analyzer: my_analyzer: # 自定义分析...
2. 重启Elasticsearch服务以使配置生效。 **六、测试与使用** 1. 创建索引时,指定使用自定义的分词器。例如: ```json { "settings": { "analysis": { "analyzer": { "default": { "type": "my_ik_...
尽管索引操作几乎立即生效,但搜索结果可能稍有延迟,这是因为索引更新需要一段时间同步到所有副本。 ### 六、RESTful API Elasticsearch 使用简单的HTTP RESTful API,易于集成到各种开发环境中。开发者可以通过...
- 设置环境变量:在`~/.bashrc`或`~/.bash_profile`中添加`export PATH=$PATH:/opt/elasticsearch-7.14.0/bin`,然后执行`source ~/.bashrc`使更改生效。 3. **配置Elasticsearch** - 修改配置文件:`vi /opt/...