PHP Elasticsearch 7.9.2字符串索引超出范围:0
我正在尝试为一个文档编制索引,我在该文档上遇到此错误PHP Elasticsearch 7.9.2字符串索引超出范围:0,php,windows,
elasticsearch,Php,Windows,
elasticsearch,我正在尝试为一个文档编制索引,我在该文档上遇到此错误 Caught exception: {"error":{"root_cause":[{"type":"string_index_out_of_bounds_exception","reason":"String index out of range: 0"}],"type":"string_in
Caught exception: {"error":{"root_cause":[{"type":"string_index_out_of_bounds_exception","reason":"String index out of range: 0"}],"type":"string_index_out_of_bounds_exception","reason":"String index out of range: 0"},"status":500}
我像这样在php中添加索引
$es = $this->elasticsearch->client;
$params = [
'index' => 'app_users',
'body' => [
'full_name' => "someone",
'login' => "someone",
'password' => "password",
'role' => "Engineer",
'email' => "email@test.com",
'status' => "active",
'last_login' => date("Y-m-d\TH:i:s\Z"),
'creation_date' => date("Y-m-d\TH:i:s\Z")
]
];
try{
$response = $es->index($params);
echo "$r->id"."\n";
echo "- Status => ".ucwords($response["result"])." - ".$r->date."\n";
unset($rec[$key]);
}catch(Exception $e){
echo 'Caught exception: ', $e->getMessage(), "\n";
exit;
}
下面是弹性日志中的错误日志,我认为出于某种原因,它没有传递索引名。如果我做错了什么或错过了什么,有人能指导我吗?我在windows上设置了elasticsearch
[2020-10-15T02:23:58,717][WARN ][r.suppressed ] [computer_name] path: //app_users/_doc, params: {index=, id=_doc, type=app_users}
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.StringLatin1.charAt(StringLatin1.java:48) ~[?:?]
at java.lang.String.charAt(String.java:712) ~[?:?]
at org.elasticsearch.cluster.metadata.MetadataCreateIndexService.validateIndexOrAliasName(MetadataCreateIndexService.java:227) ~[elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.cluster.metadata.MetadataCreateIndexService.validateIndexName(MetadataCreateIndexService.java:165) ~[elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.cluster.metadata.MetadataCreateIndexService.validate(MetadataCreateIndexService.java:941) ~[elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.cluster.metadata.MetadataCreateIndexService.applyCreateIndexRequest(MetadataCreateIndexService.java:322) ~[elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.cluster.metadata.MetadataCreateIndexService.applyCreateIndexRequest(MetadataCreateIndexService.java:367) ~[elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.action.admin.indices.create.AutoCreateAction$TransportAction$1.execute(AutoCreateAction.java:137) ~[elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.cluster.ClusterStateUpdateTask.execute(ClusterStateUpdateTask.java:47) ~[elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.cluster.service.MasterService.executeTasks(MasterService.java:702) ~[elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.cluster.service.MasterService.calculateTaskOutputs(MasterService.java:324) ~[elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.cluster.service.MasterService.runTasks(MasterService.java:219) [elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.cluster.service.MasterService.access$000(MasterService.java:73) [elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.cluster.service.MasterService$Batcher.run(MasterService.java:151) [elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.cluster.service.TaskBatcher.runIfNotProcessed(TaskBatcher.java:150) [elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.cluster.service.TaskBatcher$BatchedTask.run(TaskBatcher.java:188) [elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:678) [elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:252) [elasticsearch-7.9.2.jar:7.9.2]
at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:215) [elasticsearch-7.9.2.jar:7.9.2]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) [?:?]
at java.lang.Thread.run(Thread.java:832) [?:?]
仔细阅读elastic服务器日志,它一定是由于错误地添加了一些额外的斜杠而给出了位置 例如:-合并URL时
删除那些额外的斜杠,这将按预期开始工作。从日志中:
path://app\u users/\u doc
——开头应该只有一个/
。您的elasticsearch客户端是如何设置的?如果主机名后面有一个尾随的/
,请尝试删除该主机名?'host'=>'http://127.0.0.1:9200/“
@rickdenhaan我正在使用它进行连接,但当我删除尾部斜杠时,它不会连接。