PHP调用elasticsearch的_update_by_query接口

es官方提供的php接口是没法直接调用_update_by_query接口的,但是既然es的访问是基于http协议的,那么我们完全可以使用模拟http请求的方式来调用官方的接口。抛砖引玉,简单写了一个示例类供大家参考。


<?php
class esapi{

	//地址
	private $server;
	//索引
	private $index;

	public function __construct()
	{
		$this->server = 'http://192.168.6.110:9200';
		$this->index  = 'myproject';
	}

	/**
	 * 执行请求
	 * @param  [string] $path 调用的命令
	 * @param  array    $http http请求参数
	 * @return [string]       json格式的结果
	 */
	public function call($path,$http = array())
	{
		$url = $this->server.'/'.$this->index.'/'.$path;
		$context = stream_context_create(array('http' => $http));
		$content = file_get_contents($url,NULL,$context);

		return $content;
	}

	/**
	 * 调用_update_by_query方法
	 * @return [string] 执行结果
	 */
	public function my_update_by_query()
	{
		$param = array(
			"query" => array(
				"term" => array(
					"user" => "kimchy"
				)
			),
			"script" => array(
				"inline" => "ctx._source.counter += count",
				"params" => array(
					"count" => 4
				)
			)
		);

		//请求参数
		$http = array(
			"method" => "POST",
			"content" => json_encode($param)
		);

		//请求方法
		$path = "_update_by_query";

		return $this->call($path,$http);
	}
}


调用其他接口也一样,都是先拼接好查询参数然后调用call方法即可。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值