<?php
//集群设置
$hosts = [
   '127.0.0.1:9200'
];
$client = Elasticsearch\ClientBuilder::create()->setHosts($hosts)->build();

//创建文档
$params = [
   'index' => 'my_index',
   'type' => 'my_type',
   'id' => 'my_id',
   'body' => ['testField' => 'abc']
];
$response = $client->index($params);

//获取文档
$params = [
   'index' => 'my_index',
   'type' => 'my_type',
   'id' => 'my_id'
];
$response = $client->get($params);

//查询文档
$params = [
   'index' => 'my_index',
   'type' => 'my_type',
   'body' => [
       'query' => [
           'match' => [
               'testField' => 'abc'
           ]
       ]
   ]
];
$response = $client->search($params);

//删除文档
$params = [
   'index' => 'my_index',
   'type' => 'my_type',
   'id' => 'my_id'
];
$response = $client->delete($params);

//删除索引
$deleteParams = [
   'index' => 'my_index'
];
$response = $client->indices()->delete($deleteParams);

//创建索引
$params = [
   'index' => 'my_index',
   'body' => [
       'settings' => [
           'number_of_shards' => 2,
           'number_of_replicas' => 0
       ]
   ]
];
$response = $client->indices()->create($params);

//忽略异常
$params = [
   'index'  => 'test_missing',
   'type'   => 'test',
   'id'     => 1,
   'client' => [ 'ignore' => [400, 404] ]
];
$response = $client->get($params);

//获取响应详细信息
$params = [
   'index' => 'my_index',
   'type' => 'my_type',
   'id' => 1,
   'client' => [
       'verbose' => true,
       'ignore' => [400, 404]
   ]
];
$response = $client->get($params);

//激活未来模式
$params = [
   'index' => 'my_index',
   'type' => 'my_type',
   'id' => 'my_id',
   'client' => [
       'future' => 'lazy'
   ]
];
$future = $client->get($params);
$response = $future->wait();

//空对象
$params = [
   'index' => 'megacorp',
   'type' => 'employee',
   'body' => [
       'query' => [
           'match_phrase' => [
               'about' => 'rock climbing'
           ]
       ],
       'highlight' => [
           'fields' => [
               ['about' => new \stdClass()]
           ]
       ]
   ]
];
$response = $client->search($params);

$params = [
   'index' => 'my_index',
   'body' => [
       'mappings' => [
           'my_type' => [
               "include_in_all" => false,
               'properties' => [
                   'name' => [
                       'type' => 'string',
                       'analyzer' => 'ik'
                   ],
                   'price_now' => [
                       'type' => 'double',
                       'index' => 'not_analyzed'
                   ],
                   'p_w_picpath_thumb' => [
                       'type' => 'string',
                       'index' => 'not_analyzed'
                   ],
                   'sales_total' => [
                       'type' => 'integer',
                       'index' => 'not_analyzed'
                   ],
                   'comment' => [
                       'type' => 'integer',
                       'index' => 'not_analyzed'
                   ],
                   'create_date' => [
                       'type' => 'string',
                       'index' => 'not_analyzed'
                   ],
                   'status' => [
                       'type' => 'byte',
                       'index' => 'no'
                   ],
                   'sale' => [
                       'type' => 'byte',
                       'index' => 'no'
                   ]
               ]
           ]
       ]
   ]
];
$response = $client->indices()->create($params);

print_r($response);