Php ElasticSearch从0.90更改为1.1
我只是在做了一点澄清之后,我刚刚从ElasticSearch 0.90升级到1.1.1 我注意到的一个区别是,我有一个返回json数据的字段。0.90时,致电:Php ElasticSearch从0.90更改为1.1,php,json,elasticsearch,Php,Json,elasticsearch,我只是在做了一点澄清之后,我刚刚从ElasticSearch 0.90升级到1.1.1 我注意到的一个区别是,我有一个返回json数据的字段。0.90时,致电: $jsondata = $hits['fields']['jsondata'] 将按原样返回数据,我将使用 json_decode($jsondata) 将其转换为PHP数组 在使用相同代码的ElasticSearch 1.1下,我看到了不同的结果 $jsondata=$hits['fields']['jsondata'] 这不是返
$jsondata = $hits['fields']['jsondata']
将按原样返回数据,我将使用
json_decode($jsondata)
将其转换为PHP数组
在使用相同代码的ElasticSearch 1.1下,我看到了不同的结果
$jsondata=$hits['fields']['jsondata']
这不是返回数据,而是将其作为数组返回,因此要访问它,我需要调用
json_decode($jsondata[0]);
这是弹性搜索中的一个变化吗?它处理存储的json数据的方式
我存储的实际json数据如下所示:
[{"data1":"43456435435345","data2":"tyetytbety"}]
如果您对此有任何帮助,我们将不胜感激。这实际上是Elasticsearch 1.x中字段数据返回的正常和预期行为,并在中进行了解释 响应fields参数的字段值现在总是作为数组返回。一个字段可以有一个或多个值,这意味着它们有时作为标量返回,有时作为数组返回。通过始终返回数组,这简化了用户代码。此规则的唯一例外是当使用字段检索元数据(如路由值)时,这些元数据总是单数的。元数据字段始终作为标量返回 fields参数用于检索存储的字段,而不是从_源提取的字段。这意味着它不能再用于返回整个对象,也不再接受_source.fieldname格式。对于这些参数,您应该使用_source _source _include和_source _exclude参数
还有一点信息,所有数据都存储为数组,如果我查看0.9上存储的信息,它存储为“field:data”,而在1.1上存储为“field:[data]”,这就是它作为数组返回的原因,这是正常和预期的行为吗?我是否可以改变行为以按给定方式存储数据,而不是总是将其作为数组存储?