Php 索引期间Elasticsearch MapperParsingException[解析失败,文档为空]
我将elasticsearch 1.2.2与php包装器elastica一起使用 在为一些文档编制索引时,我遇到了以下异常Php 索引期间Elasticsearch MapperParsingException[解析失败,文档为空],php,
elasticsearch,elastica,Php,
elasticsearch,Elastica,我将elasticsearch 1.2.2与php包装器elastica一起使用 在为一些文档编制索引时,我遇到了以下异常 PHP Fatal error: Uncaught exception 'Elastica\Exception\Bulk\ResponseException' with message 'Error in one or more bulk request actions: index: /en_search/en_msg/936 caused MapperParsing
PHP Fatal error: Uncaught exception 'Elastica\Exception\Bulk\ResponseException' with message 'Error in one or more bulk request actions:
index: /en_search/en_msg/936 caused MapperParsingException[failed to parse, document is empty]
' in /root/search/vendor/ruflin/elastica/lib/Elastica/Bulk.php:395
Stack trace:
#0 /root/search/vendor/ruflin/elastica/lib/Elastica/Bulk.php(345): Elastica\Bulk->_processResponse(Object(Elastica\Response))
#1 /root/search/vendor/ruflin/elastica/lib/Elastica/Client.php(284): Elastica\Bulk->send()
#2 /root/search/vendor/ruflin/elastica/lib/Elastica/Index.php(147): Elastica\Client->addDocuments(Array)
#3 /root/search/vendor/ruflin/elastica/lib/Elastica/Type.php(187): Elastica\Index->addDocuments(Array)
#4 /root/search/setData.php(36): Elastica\Type->addDocuments(Array)
#5 {main}
thrown in /root/search/vendor/ruflin/elastica/lib/Elastica/Bulk.php on line 395
现在,它无法解析的文档是这个文档,它显然不是空的
array(
[id] => 936
[uid] => 3222
[msid] => 211
[login] => user1222
[msg] => Wouldn’t you love a cup right now?
)
文档映射是这样的
$mapping->setProperties(array(
'id' => array('type' => 'integer', 'include_in_all' => true),
'uid' => array('type' => 'integer', 'include_in_all' => true),
'msid' => array('type' => 'integer', 'include_in_all' => true),
'login' => array('type' => 'string', 'include_in_all' => TRUE),
'msg' => array('type' => 'string', 'include_in_all' => true),
));
按照这里的建议在批量模式下进行索引
我很确定这是由
字符引起的。不确定是否需要逃跑。如果是这样的话,我如何转义这些字符 已解决。这是一个编码问题。我的数据来自mysql服务器,在pdo对象初始化期间,我必须设置正确的字符集选项。由于特殊字符,这是一个编码问题,我建议转义您试图索引的文本
$text = html_entity_decode(htmlentities($text, ENT_IGNORE, "UTF-8"));
你能分享你进行批量请求的代码吗?那是什么字符集?