[ElasticSearch]那些年踩过的ElasticSerch坑

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/52801393 1.
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/52801393
1. 索引名称错误
1.1 代码
 
 
  1. xiaosi@Qunar:~$ curl -XPUT 'localhost:9200/Quanr/employee/1'  '
  2. > {
  3. >     "first_name" : "John",
  4. >     "last_name" :  "Smith",
  5. >     "age" :        25,
  6. >     "about" :      "I love to go rock climbing",
  7. >     "interests": [ "sports", "music" ]
  8. > }';
  9. {"error":{"root_cause":[{"type":"invalid_index_name_exception","reason":"Invalid index name [Quanr], must be lowercase","index":"Quanr"}],"type":"invalid_index_name_exception","reason":"Invalid index name [Quanr], must be lowercase","index":"Quanr"},"status":400}curl: (3) [globbing] nested brace in column 148
1.2 报错原因

索引名称必须小写

1.3 解决方案
 
 
  1. xiaosi@Qunar:~/opt/elasticsearch-2.3.3$ curl -XPUT 'localhost:9200/qunar-index/employee/1'  -d '
  2. > {
  3. >     "first_name" : "John",
  4. >     "last_name" :  "Smith",
  5. >     "age" :        25,
  6. >     "about" :      "I love to go rock climbing",
  7. >     "interests": [ "sports", "music" ]
  8. > }';
  9. {"_index":"qunar-index","_type":"employee","_id":"1","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"created":true}xiaosi@Qunar:~/opt/elasticsearch-2.3.3$


2. 使用Groovy脚本更新文档报错 
2.1 代码
 
  
  1. /**
  2. * 使用脚本更新文档
  3. * @param client
  4. * @param index
  5. * @param type
  6. * @param id
  7. */
  8. public static void updateByScripted(Client client, String index, String type, String id){
  9. UpdateRequestBuilder updateRequestBuilder = client.prepareUpdate();
  10. updateRequestBuilder.setIndex(index);
  11. updateRequestBuilder.setType(type);
  12. updateRequestBuilder.setId(id);
  13. // 脚本
  14. Script collegeScript = new Script("ctx._source.college = \"软件学院\"", ScriptService.ScriptType.INLINE, null, null);
  15. updateRequestBuilder.setScript(collegeScript);
  16. // 更新文档
  17. UpdateResponse response = updateRequestBuilder.get();
  18. }
2.2 报错信息
 
  
  1. java.lang.IllegalArgumentException: failed to execute script
  2. at org.elasticsearch.action.update.UpdateHelper.executeScript(UpdateHelper.java:257)
  3. at org.elasticsearch.action.update.UpdateHelper.prepare(UpdateHelper.java:197)
  4. at org.elasticsearch.action.update.UpdateHelper.prepare(UpdateHelper.java:80)
  5. at org.elasticsearch.action.update.TransportUpdateAction.shardOperation(TransportUpdateAction.java:174)
  6. at org.elasticsearch.action.update.TransportUpdateAction.shardOperation(TransportUpdateAction.java:168)
  7. at org.elasticsearch.action.update.TransportUpdateAction.shardOperation(TransportUpdateAction.java:66)
  8. at org.elasticsearch.action.support.single.instance.TransportInstanceSingleOperationAction$ShardTransportHandler.messageReceived(TransportInstanceSingleOperationAction.java:244)
  9. at org.elasticsearch.action.support.single.instance.TransportInstanceSingleOperationAction$ShardTransportHandler.messageReceived(TransportInstanceSingleOperationAction.java:240)
  10. at org.elasticsearch.transport.TransportRequestHandler.messageReceived(TransportRequestHandler.java:33)
  11. at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:75)
  12. at org.elasticsearch.transport.TransportService$4.doRun(TransportService.java:376)
  13. at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
  14. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  15. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  16. at java.lang.Thread.run(Thread.java:745)
  17. Caused by: ScriptException[scripts of type [inline], operation [update] and lang [groovy] are disabled]
  18. at org.elasticsearch.script.ScriptService.compile(ScriptService.java:244)
  19. at org.elasticsearch.script.ScriptService.executable(ScriptService.java:442)
  20. at org.elasticsearch.action.update.UpdateHelper.executeScript(UpdateHelper.java:250)
  21. ... 14 more
2.3 报错原因

脚本默认被禁用了。https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html

2.4 解决方案 

在安装目录下config文件夹找到elasticsearch.yml文件,然后添加如下配置:

 
   
  1. script.engine.groovy.inline.update: on
然后重新启动ElasticSearch





相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
4月前
Elasticsearch采坑实践总结
Elasticsearch采坑实践总结
49 0
|
1月前
|
存储 自然语言处理 算法
「扫盲」Elasticsearch
「扫盲」Elasticsearch
44 3
|
7月前
|
JSON 视频直播 API
elasticsearch的一些小知识点
elasticsearch的一些小知识点
|
7月前
|
存储 自然语言处理 运维
Elasticsearch知识点回顾
Elasticsearch知识点回顾
57 0
|
8月前
|
存储 缓存 自然语言处理
Elasticsearch面试题(查漏补缺)
Elasticsearch面试题(查漏补缺)
68 0
|
10月前
|
存储 消息中间件 缓存
【ElasticSearch从入门到放弃系列 零】ElasticSearch看这一篇就够了(三)
【ElasticSearch从入门到放弃系列 零】ElasticSearch看这一篇就够了(三)
62 0
|
10月前
|
存储 JSON 自然语言处理
【ElasticSearch从入门到放弃系列 零】ElasticSearch看这一篇就够了(一)
【ElasticSearch从入门到放弃系列 零】ElasticSearch看这一篇就够了(一)
120 0
|
10月前
|
存储 消息中间件 负载均衡
【ElasticSearch从入门到放弃系列 零】ElasticSearch看这一篇就够了(二)
【ElasticSearch从入门到放弃系列 零】ElasticSearch看这一篇就够了(二)
83 0
|
缓存 搜索推荐 Java
Elasticsearch 零基础入坑指南
Elasticsearch 零基础入坑指南
Elasticsearch 零基础入坑指南
|
JSON 自然语言处理 算法
ELK三部曲-Elasticsearch入门
Elastic单机安装以及常用操作讲解
145 0
ELK三部曲-Elasticsearch入门