首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将内容类型标头设置为Elasticsearch-php客户端

将内容类型标头设置为Elasticsearch-php客户端
EN

Stack Overflow用户
提问于 2018-11-08 11:56:17
回答 2查看 1.6K关注 0票数 4

我正在尝试使用Elasticsearch-php 5.0版本将搜索查询发送到Elasticsearch 6.4.2。

从5.0到6.0的一个重大变化是存在"严格的内容类型验证“,这意味着对Elasticsearch的请求必须用”Content: application/json“标题发送。

为了添加这个标题,我尝试使用这条线的建议

代码语言:javascript
复制
    $params = [
    'index' => $index,
    'type' => $mapping,
    'body' => $query,
    'client' => [
        'curl' => [CURLOPT_HTTPHEADER => array('Content-type: text/plain')]
        ]
    ];

    $res = $this->mESClient->search($params); // this is Elasticsearch/Client

    return $res;

但是由于某种原因,当代码尝试执行数组()时,我一直得到“注意:数组到字符串的转换”,并且请求被网络发送。

请注意:当我删除$params数组的“client”部分时,请求将在Elasticsearch中接收。

EN

回答 2

Stack Overflow用户

发布于 2018-11-08 12:19:22

根据版本矩阵,在处理ES >=6时,应该使用ElasticSearch-php6.0。

ElasticSearch 5.0与ElasticSearch 6不兼容。

您提到的线程与ES-PHP1.x/2.x有关,它可能具有不同的选项语法。这与你的情况无关,只是其中一条评论和我刚才说的一样。

FYI,如果您使用的是Elasticsearch 6.0+,您也需要将您的ES-PHP客户端升级到6.0分支。ES 6.0+自动设置内容类型标题: fd3b0f1

票数 3
EN

Stack Overflow用户

发布于 2018-11-08 13:05:35

发现问题了。在试图使用curl设置HTTP头并在URL中指定授权细节时,似乎存在一个错误的功能。

例如:@主机:端口

由于某些原因,客户端将curl头复制到其他curl选项(需要字符串而不是数组),因此,除了从curl_setopt_array引发的数组到字符串转换。

当我从主机URL中删除授权细节并使用curl授权头时,一切都正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53207255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档