我在Elasticsearch中有一个有趣的问题。执行搜索时,它返回无效的json,这样当我尝试运行时,JSON.parse(response)
会导致解析错误(Node.js)。
以下是响应数据的样子:
{
"took":5,
"timed_out":false,
"_shards": {
"total":5,
"successful":5,
"failed":0
},
"hits": {
"total":28,
"max_score": 1.1264253,
"hits": [
{
"_index": "myindex",
"_type": "v1",
"_id":"AUsTvTc0HrKvNpcAkwza",
"_score": 1.1264253,
"_source": {
"term":"Value"
},
},
{
"_index": "myindex",
"_type": "v1",
"_id":"BRxvTMggf5NTMnxwzalF",
"_score": 0.1328153,
"_source": {
"term":"Other Value"
},
}
]
}
}
正如您在_source
属性之后注意到有逗号,即使它是该对象中的最后一个属性。
为了能够解析这个,我必须运行以下代码:
var json = response.replace(/,\s+}/g, '}');
json = JSON.parse(json);
然后它会解析,但这只是一个创可贴。我无法弄清楚的是,为什么 Elasticsearch会像我那样返回我的JSON?
非常感谢任何帮助!
埃里克