栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Elasticsearch处理 空对象问题

Elasticsearch处理 空对象问题

PHP 处理 JSON 数组或对象 | Elasticsearch-PHP | Elastic

空对象

Elasticsearch API 在几个地方使用了空对象,这会对 PHP 造成影响。不像其它的语言,PHP 没有一个简便的符号来表示空对象,而许多开发者还不知道如何指定一个空对象。

设想在查询中增加 Highlight:

{
    "query" : {
        "match" : {
            "content" : "quick brown fox"
        }
    },
    "highlight" : {
        "fields" : {
            "content" : {}
        }
    }
}

这个空对象便会引起问题

问题就在于 PHP 会自动把 "content" : {} 转换成 "content" : [] ,在 Elasticsearch DSL 中这样的数据格式是非法的。我们需要告诉 PHP 那个空对象就是一个空对象而非空数组。为了在查询中定义空对象,你需要这样做:

$params['body'] = array(
    'query' => array(
        'match' => array(
            'content' => 'quick brown fox'
        )
    ),
    'highlight' => array(
        'fields' => array(
            'content' => new stdClass()
        )
    )
);
$results = $client->search($params);

使用 PHP 的 stdClass 对象来代表空对象,现在就可以解析为正确的 JSON 数据了。

通过使用一个 stdClass 对象,我们可以强制 json_encode 解析为空对象,而不是空数组。然而,这种冗余的写法是唯一解决 PHP 空对象的方法,没有简便的方法可以表示空对象

PHP 处理 JSON 数组或对象 | Elasticsearch-PHP | Elastic

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/326529.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号