Elasticsearch返回无效的JSON

时间:2015-01-23 00:55:49

标签: json elasticsearch

我在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?

非常感谢任何帮助!

埃里克

1 个答案:

答案 0 :(得分:0)

我觉得这是一个类似于this one的问题 它是一个已知的错误,当你错误地索引JSON文档时出现。 修复此处将删除该文档并再次正确索引。