Elasticsearch双节点集群创建索引副本时JSON解析报错
解决Elasticsearch设置副本数时的JSON解析异常问题
问题根源
原curl命令存在两处语法错误,导致Elasticsearch收到的JSON格式无效:
- URL部分的双引号未闭合:原命令中
"http://localhost:9200/*/_settings缺少结尾双引号,shell解析时会出现语法混乱。 -d参数的JSON内容双引号未正确处理:shell中双引号嵌套时未转义,导致JSON里的字段名丢失双引号,ES无法识别合法的JSON结构。
修正后的命令
提供两种可行的修正方案:
方案一:转义JSON内的双引号
对-d参数里的双引号用反斜杠转义,同时补全URL的闭合双引号:
curl -XPUT "http://localhost:9200/*/_settings" -H "Content-Type: application/json" -d "{ \"index\" : { \"number_of_replicas\" : 1}}"
方案二:用单引号包裹JSON内容
利用shell中单引号不解析内部双引号的特性,直接用单引号包裹JSON字符串:
curl -XPUT "http://localhost:9200/*/_settings" -H "Content-Type: application/json" -d '{ "index" : { "number_of_replicas" : 1}}'
验证
执行修正后的命令后,Elasticsearch可正确解析JSON,完成所有索引副本数设为1的操作。
内容的提问来源于stack exchange,提问作者user21742699
相关产品推荐
相关产品推荐

