[ElasticSearch]那些年踩过的ElasticSerch坑
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/52801393 1. 索引名称错误 1.1 代码 xiaosi@Qunar:~$ curl -XPUT 'localhost:9200/Quanr/employee/1' ' > { > "first_name" : "John", > "last_name" : "Smith", > "age" : 25, > "about" : "I love to go rock climbing", > "interests": [ "sports", "music" ] > }'; {"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 解决方案 xiaosi@Qunar:~/opt/elasticsearch-2.3.3$ curl -XPUT 'localhost:9200/qunar-index/employee/1' -d ' > { > "first_name" : "John", > "last_name" : "Smith", > "age" : 25, > "about" : "I love to go rock climbing", > "interests": [ "sports", "music" ] > }'; {"_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 代码 /** * 使用脚本更新文档 * @param client * @param index * @param type * @param id */ public static void updateByScripted(Client client, String index, String type, String id){ UpdateRequestBuilder updateRequestBuilder = client.prepareUpdate(); updateRequestBuilder.setIndex(index); updateRequestBuilder.setType(type); updateRequestBuilder.setId(id); // 脚本 Script collegeScript = new Script("ctx._source.college = \"软件学院\"", ScriptService.ScriptType.INLINE, null, null); updateRequestBuilder.setScript(collegeScript); // 更新文档 UpdateResponse response = updateRequestBuilder.get(); } 2.2 报错信息 java.lang.IllegalArgumentException: failed to execute script at org.elasticsearch.action.update.UpdateHelper.executeScript(UpdateHelper.java:257) at org.elasticsearch.action.update.UpdateHelper.prepare(UpdateHelper.java:197) at org.elasticsearch.action.update.UpdateHelper.prepare(UpdateHelper.java:80) at org.elasticsearch.action.update.TransportUpdateAction.shardOperation(TransportUpdateAction.java:174) at org.elasticsearch.action.update.TransportUpdateAction.shardOperation(TransportUpdateAction.java:168) at org.elasticsearch.action.update.TransportUpdateAction.shardOperation(TransportUpdateAction.java:66) at org.elasticsearch.action.support.single.instance.TransportInstanceSingleOperationAction$ShardTransportHandler.messageReceived(TransportInstanceSingleOperationAction.java:244) at org.elasticsearch.action.support.single.instance.TransportInstanceSingleOperationAction$ShardTransportHandler.messageReceived(TransportInstanceSingleOperationAction.java:240) at org.elasticsearch.transport.TransportRequestHandler.messageReceived(TransportRequestHandler.java:33) at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:75) at org.elasticsearch.transport.TransportService$4.doRun(TransportService.java:376) at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: ScriptException[scripts of type [inline], operation [update] and lang [groovy] are disabled] at org.elasticsearch.script.ScriptService.compile(ScriptService.java:244) at org.elasticsearch.script.ScriptService.executable(ScriptService.java:442) at org.elasticsearch.action.update.UpdateHelper.executeScript(UpdateHelper.java:250) ... 14 more 2.3 报错原因 脚本默认被禁用了。https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html 2.4 解决方案 在安装目录下config文件夹找到elasticsearch.yml文件,然后添加如下配置: script.engine.groovy.inline.update: on 然后重新启动ElasticSearch