初窥 Elasticsearch-PHP [1.0]

初始化


Elasticsearch-PHP
下载地址:http://www.thinkphp.cn/code/download/id/1290.html
教程以ThinkPHP为例

下载Elasticsearch-PHP文件放在ThinkPHP\Library\Vendor\

    Vendor('Elasticsearch.autoload');
    $params['hosts'] = array(
        '127.0.0.1:9200'
    );
    $this->client = new \Elasticsearch\Client($params);

如果不给hosts参数也是可以的,默认为localhost:9200

索引

创建一个索引

  • 自增ID
      public function create_index(){
          $indexParams['index'] = 'my_index';
          $indexParams['type'] = 'my_index';
          $indexParams['body']['settings']['number_of_shards'] = 2;
          $indexParams['body']['settings']['number_of_replicas'] = 0;
          
          $this->client->create($indexParams);
      }
    
  • 使用自己的ID

    只要再添加一个id字段即可。例:

      $indexParams['id'] = '123';
    
删除索引

public function delete_index(){
    $deleteParams['index'] = 'my_index';

    $ret = $this->client->indices()->delete($deleteParams);
    dump($ret);
}

文档


public function add_document(){
    $params = array();
    $params['body'] = array(
        'testField' => 'dfdsfdsf',
        'ok' => '1  '
    );
    $params['index'] = 'my_index2';
    $params['type'] = 'my_index2';
    $params['id'] = '222';

    $ret = $this->client->index($params);

    dump($ret);
}


  • 根据id、index、type来查询(一条数据,精确查询)
      public function get_document(){
          $getParams = array();
          $getParams['index'] = 'my_index';
          $getParams['type'] = 'my_index';
          $getParams['id'] = 'w1231313';
          
          $retDoc = $this->client->get($getParams);
          dump($retDoc);
      }
    
  • 模糊查询
      public function search_(){
          $searchParams = array();
          $searchParams['body'] = array(
              'query' => array(
                  'match' => array(
                      'testField' => 'dfdsfdsf'
                  )
              )
          );
          
          $retDoc = $this->client->search($searchParams);
          dump($retDoc);
      }
    
  • 检查文档是否存在
      public function exists(){
          $getParams = array(
              'index' => 'my_index',
              'type' => 'my_index',
              'id' => 'w1231313'
          );
    
          $exists = $this->client->exists($getParams);
          dump($exists);
      } 
    


    public function update_document(){
        $updateParams = array();
        $updateParams['index'] = 'my_index';
        $updateParams['type'] = 'my_index';
        $updateParams['id'] = 'w1231313';
        $updateParams['body']['doc']['testField']  = 'xxxx';

        $response = $this->client->update($updateParams);
        dump($response);
    }


    public function delete_document(){
        $deleteParams = array();
        $deleteParams['index'] = 'my_index';
        $deleteParams['type'] = 'my_index';
        $deleteParams['id'] = 'w1231313';

        $retDelete = $this->client->delete($deleteParams);
        dump($retDelete);
    }

搜索

  • 空查询
      public function search(){
          $retDoc = $this->client->search();
          dump($retDoc);
      }    
    

    当然可以加上其他的一些条件,例如:

      $searchParams['index'] = 'my_index';
      $searchParams['type'] = 'my_index';
    
  • 查询与过滤

term : 相当于模糊查询
match : 相当于精确查询

    public function test111(){
        $params['index'] = 'my_index';
        $params['type']  = 'my_index';

        $filter = array();
        $filter['term']['my_field'] = 'abc';

        $query = array();
        $query['match']['my_other_field'] = 'xyz';

        $params['body']['query']['filtered'] = array(
            "filter" => $filter,
            "query"  => $query
        );

        $results = $this->client->search($params);
        dump($results);
    }
  • 分页

from : 跳过开始的结果数,默认0
size: 结果数,默认为10

    public function search(){
        $searchParams['index'] = 'my_index';
        $searchParams['type'] = 'my_index';
        $searchParams['from'] = 0;
        $searchParams['size'] = 100;
        
        $retDoc = $this->client->search($searchParams);
        dump($retDoc);
    }
  • 布尔查询

must : 多个查询条件的完全匹配,相当于 and。
must_not : 多个查询条件的相反匹配,相当于 not。
should : 至少有一个查询条件匹配, 相当于 or。

    public function boolquery(){
        $params['index'] = 'my_index';
        $params['type']  = 'my_index';
        $params['body']['query']['bool']['must'] = array(
            array('match' => array('testField' => 'abc')),
            array('match' => array('anotherTestField' => 'xyz')),
        );

        $params['body']['query']['bool']['must_not'] = array(
            array('term' => array('testField' => 'abc'))
        );

        $results = $this->client->search($params);
        dump($results);
    }

END

大致的一些使用如上,若有疑问,女生请找我,男生自己看API。
传送门
es-API:http://es.xiaoleilu.com/054_Query_DSL/80_Validating_queries.html
es-PHP-API:https://www.elastic.co/guide/en/elasticsearch/client/php-api/1.0/_search_operations.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容