在文章Windows本地安装和使用Elasticsearch中介绍过用curl的方式和ElasticSearch交互,为了能在WordPress中使用ElasticSearch,还有必要研究一下用WordPress自带的wp_remote_request()交互的基本方法。
目录
wp_remote_request()的使用方法
wp_remote_request()函数可以发起一个HTTP请求,并获取这次请求的结果,其用法如下:
wp_remote_request( string $url, array $args = array() )
参数 | 用法 |
$url | 要请求的地址 |
$args | HTTP请求的参数,包括: method:请求方法,例如PUT,POST,GET,DELETE等 timeout:timeout时间,默认5秒 redirection:重定向的最大次数,默认5次 httpversion:HTTP协议版本 user-agent:请求使用的user agent headers :response headers的key value数组 body:Response body 更具体参数可参考class-http.php |
与ElasticSearch交互
比如,向名为my-index-000001的索引里添加一条记录,自动创建ID,代码如下:
$add_doc = array(
'url' => 'http://localhost:9200/my-index-000001/_doc',
'args' => array(
'method' => 'POST',
'headers' => array( 'Content-Type' => 'application/json' ),
'body' => json_encode(array(
'name' => "John Doe"
))
)
);
$do_request = $get_docs;
$request = wp_remote_request( $do_request['url'], $do_request['args']);
返回结果如下:
object(stdClass)#12274 (8) {
["_index"]=>
string(15) "my-index-000001"
["_type"]=>
string(4) "_doc"
["_id"]=>
string(20) "pq8DB34BAqnhPZnG0sdo"
["_version"]=>
int(1)
["result"]=>
string(7) "created"
["_shards"]=>
object(stdClass)#12273 (3) {
["total"]=>
int(2)
["successful"]=>
int(1)
["failed"]=>
int(0)
}
["_seq_no"]=>
int(2)
["_primary_term"]=>
int(1)
}
只要改变参数,就能进行需要的交互,比如:
创建索引
$create_index = array(
'url' => 'http://localhost:9200/my-index-000001',
'args' => array(
'method' => 'PUT',
)
);
删除索引
$delete_index = array(
'url' => 'http://localhost:9200/my-index-000001',
'args' => array(
'method' => 'DELETE',
)
);
获取索引下的所有记录
$get_docs = array(
'url' => 'http://localhost:9200/my-index-000001/_search',
'args' => array(
'method' => 'GET',
'headers' => array( 'Content-Type' => 'application/json' ),
'body' => json_encode(array(
'query' => array('match_all' => '')
))
)
);