php5.39以下版本操作elasticsearch

搭建es服务的工程中我得到如下教训:
使用新工具前一定要先找本书读一遍,这个比读手册强很多倍真的

例如这个过滤器,网上和手册上都找不到,这个语法我无论如何都写不出来的,当然可以阅读es源码,让我这个略读java的人阅读源码有点难度。

但是在书上很容易找到了,如果我花5个小时大致读读es服务器开发,就不用花一个小时去找这些功能了。

"post_filter":
    {
      "and":[
        {"term":{"delflag":0}},
        {"or":[
          {"term":{"status":1}},
          {"term":{"status":2}}
          ]
        },
        {"or":[
          {"term":{"cate_id":1036}}
          ]
        }
        ]
    }

想用composer可惜线上的php还用的5.3.8
无奈只能自己拼接查询,然后发起请求了。

elasticsearch的api本质上就是对url发起各种请求

我的代码里面实现了对delete和post进行封装,满足项目开发的绝大部分需求

麻烦的是得自己去写查询拼装的类。

/**
 *
* Copyright(c) 201x,
* All rights reserved.
*
* 功 能:
* @author bikang@book.sina.com
* date:2017年2月15日
* 版 本:1.0
 */
class ElasticBookSearcher{

    /**
     * 获取elasticsearch的搜索结果
     * post
     * @param unknown $url
     * @param unknown $json_data
     */
    public function esPost($url,$data) {
        $defaults = array(
                CURLOPT_POST => 1,
                CURLOPT_HEADER => 0,
                CURLOPT_URL => $url,
                CURLOPT_RETURNTRANSFER => 1,
                CURLOPT_TIMEOUT => 5,
                CURLOPT_CONNECTTIMEOUT => 5,
                CURLOPT_POSTFIELDS => json_encode($data),
        );

        $ch = curl_init();
        curl_setopt_array($ch, $defaults);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }

    //delete
    public function esDelete($url,$time_out=5,$connect_out=5){
        $ch = curl_init ();
        curl_setopt ( $ch, CURLOPT_URL, $url);
        curl_setopt ( $ch, CURLOPT_FRESH_CONNECT, false );
        //head
        curl_setopt ( $ch, CURLOPT_HEADER, false );
        curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
        curl_setopt ( $ch, CURLOPT_TIMEOUT, $time_out );
        curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, $connect_out);
        curl_setopt ( $ch, CURLOPT_NOSIGNAL, true );
        curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, 'DELETE' );
        $ret = curl_exec ($ch);
        return $ret;
    }

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值