gpt4 book ai didi

php - Elasticsearch-PHP批量

转载 作者:行者123 更新时间:2023-12-02 23:24:17 25 4
gpt4 key购买 nike

我正在尝试批量-通过PHP将数据通过cURL导入elasticsearch。
首先,我想补充一下,我复制了PHP生成的导入数据格式,并将其粘贴到Sense中,批量导入就可以了。但是,通过使用cSense中使用的相同方法,通过cURL将相同数据发送到相同链接,我收到以下错误消息:

{"_index":"product","_type":"pid","_id":"_bulk","found":false}
或者,如果我未通过链接指定_index和_type,而是通过发送的json进行指定,则会收到以下错误消息
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"No endpoint or operation is available at [_bulk]"}],"type":"illegal_argument_exception","reason":"No endpoint or operation is available at [_bulk]"},"status":400}
我创建cURL请求的方式如下
protected $curl_opts = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_TIMEOUT => 10
);

......

public function sendcURL() {
$this->curl->create('http://localhost:9200/_bulk';

foreach($this->curl_opts as $option => $option_value)
$this->curl->option($option, $option_value);

$this->curl->http_header('Content-Type', 'application/json');
$this->curl->option(CURLOPT_BINARYTRANSFER, true);
$this->curl->option(CURLOPT_HEADER, true);
$this->curl->post($json_data);
$this->execute();
}
考虑$ json_data的格式正确,以及考虑我使用的链接/方法正确。
同样,我知道了elasticsearch-php github存储库(甚至搜索了它们在其中如何进行批量存储,这与我的方法类似),但是我现在宁愿根据自己的需要编写自己的方法和库。现在不需要完整的elastic-php库。
我究竟做错了什么?

最佳答案

您是否考虑过ES文档中写的那样,在向_bulk端点发送请求时,应将Content-Type header 设置为application / x-ndjson

ES bulk Docs

可能是您正在使用CURLOPT_CUSTOMREQUEST => "GET",但对ES的真正请求是POST。

根据DOCS的说法,这可能导致libcurl发送无效请求,并可能使远程服务器严重混乱

CURL_OPT DOCS

如果其中一种方法可行,请告诉我,我将答案编辑为正确的方法

关于php - Elasticsearch-PHP批量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44943324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com