Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ElasticSearch从0.90更改为1.1_Php_Json_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Php,Json,elasticsearch" /> elasticsearch,Php,Json,elasticsearch" />

Php ElasticSearch从0.90更改为1.1

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'] 这不是返

我只是在做了一点澄清之后,我刚刚从ElasticSearch 0.90升级到1.1.1

我注意到的一个区别是,我有一个返回json数据的字段。0.90时,致电:

$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]”,这就是它作为数组返回的原因,这是正常和预期的行为吗?我是否可以改变行为以按给定方式存储数据,而不是总是将其作为数组存储?