我在 int-array 类型的字段中遇到了这个问题。使用适用于 Node.js 的 aws-sdk,我通过CloudSearchDomain.uploadDocuments()方法提交文档。文档的 JSON(在searchContent变量中)是在节点进程中创建的,然后我使用:
var params = {
contentType: 'application/json',
documents: JSON.stringify([searchContent])
};
csd.uploadDocuments(params, function(err, data){
...(callback process)...
});
非字符串化的searchContent对象如下所示:
{ id: 1,
type: 'Product',
hash_type_id: 'Product-1',
name: 'Test product',
description: 'A test product',
category: [ 2 ],
content: '<some text here>',
state: [ 1 ],
hash_all: '<some text>'
}
并像这样字符串化:
[{"id":1,"type":"Product","hash_type_id":"Product-1","name":"Test product","description":"A test product","content":" <some text>","category":[2],"state":[1],"hash_all":"<some text>"}]
我得到的错误是:
{
"message": "{ [\"The value of category cannot be a JSON array or object\"] }",
"code": "DocumentServiceException",
"time": "2014-11-20T01:24:27.499Z",
"statusCode": 400,
"retryable": false
}
如前所述,类别字段是 int-array 类型。为什么我会收到此消息?
更新:我还尝试对类别字段使用类型化数组(Int16Array),结果完全相同。