使用 Elasticsearch 进行增删改查操作(PHP版本)
我們使用Requests函式庫。
创造
#! /usr/bin/php
<?php
//
// elastic_create.php
//
// Oct/12/2018
//
// ----------------------------------------------------------------
function dict_append_proc ($dict_aa,$id,$name,$population,$date_mod)
{
$dict_unit = array ();
$dict_unit['name'] = $name;
$dict_unit['population'] = $population;
$dict_unit['date_mod'] = $date_mod;
$dict_aa[(string)$id]= $dict_unit;
return $dict_aa;
}
//
// ----------------------------------------------------------------
function data_prepare_proc ()
{
$dict_aa = array ();
$dict_aa = dict_append_proc ($dict_aa,"t0921",'宇都宮',71345,'2002-8-15');
$dict_aa = dict_append_proc ($dict_aa,"t0922",'小山',68237,'2002-12-4');
$dict_aa = dict_append_proc ($dict_aa,"t0923",'佐野',52876,'2002-7-15');
$dict_aa = dict_append_proc ($dict_aa,"t0924",'足利',49142,'2002-6-22');
$dict_aa = dict_append_proc ($dict_aa,"t0925",'日光',81953,'2002-10-18');
$dict_aa = dict_append_proc ($dict_aa,"t0926",'下野',72537,'2002-9-21');
$dict_aa = dict_append_proc ($dict_aa,"t0927",'さくら',49816,'2002-8-24');
$dict_aa = dict_append_proc ($dict_aa,"t0928",'矢板',52681,'2002-9-21');
$dict_aa = dict_append_proc ($dict_aa,"t0929",'真岡',74536,'2002-8-5');
$dict_aa = dict_append_proc ($dict_aa,"t0930",'栃木',27146,'2002-6-17');
$dict_aa = dict_append_proc ($dict_aa,"t0931",'大田原',25371,'2002-8-15');
$dict_aa = dict_append_proc ($dict_aa,"t0932",'鹿沼',38179,'2002-9-17');
$dict_aa = dict_append_proc ($dict_aa,"t0933",'那須塩原',19436,'2002-7-11');
$dict_aa = dict_append_proc ($dict_aa,"t0934",'那須烏山',73912,'2002-8-24');
return $dict_aa;
}
// ----------------------------------------------------------------
fputs (STDERR,"*** 開始 ***\n");
include('Requests/library/Requests.php');
Requests::register_autoloader();
$dict_aa = data_prepare_proc ();
$url_base = "http://localhost:9200/cities/tochigi";
foreach ($dict_aa as $key => $value)
{
$json_str = json_encode($value);
print $key . "\n";
$url = $url_base . "/" . $key;
$headers = array('content-type' => 'application/json');
$request = Requests::put($url,$headers, $json_str);
};
fputs (STDERR,"*** 終了 ***\n");
// ----------------------------------------------------------------
?>
阅读
#! /usr/bin/php
<?php
// ------------------------------------------------------------------
// php/read/elastic_read.php
//
// Oct/12/2018
//
// ------------------------------------------------------------------
function dict_display_proc ($dict_aa)
{
ksort ($dict_aa);
foreach ($dict_aa as $key => $value)
{
$name = $value["name"];
$population = $value['population'];
$date_mod = $value['date_mod'];
print "$key\t";
print "$name\t";
print "$population\t";
print "$date_mod\n";
}
}
//
// ------------------------------------------------------------------
fputs (STDERR,"*** 開始 ***\n");
include('Requests/library/Requests.php');
Requests::register_autoloader();
$url = "http://localhost:9200/cities/tochigi/_search?q=*&size=100";
$request = Requests::get($url, array('Accept' => 'application/json'));
$json_string = $request->body;
$data_aa = json_decode ($json_string,true);
// var_dump ($data_aa['hits']['hits']);
$count = count($data_aa['hits']['hits']);
print $count . "\n";
$dict_aa = array ();
foreach ($data_aa['hits']['hits'] as $unit)
{
$key = $unit['_id'];
$dict_aa[$key] = $unit['_source'];
}
dict_display_proc ($dict_aa);
fputs (STDERR,"*** 終了 ***\n");
// ------------------------------------------------------------------
?>
更新
#! /usr/bin/php
<?php
// ------------------------------------------------------------------
// update/elastic_update.php
//
// Oct/12/2018
//
// ------------------------------------------------------------------
fputs (STDERR,"*** 開始 ***\n");
date_default_timezone_set('Asia/Tokyo');
include('Requests/library/Requests.php');
Requests::register_autoloader();
$key_in = $argv[1];
$population_in = intval ($argv[2]);
echo $key_in . "\t";
echo $population_in . "\n";
$url = "http://localhost:9200/cities/tochigi/" . $key_in . "/_update";
print $url . "\n";
$str_date_mod = date ("Y-m-d");
$params = array("population" => $population_in,"date_mod" => $str_date_mod);
$script = array("source" => "ctx._source.population = params.population; ctx._source.date_mod = params.date_mod", "lang" => "painless", "params" => $params);
$args = array("script" => $script);
$json_str = json_encode ($args);
$headers = array('content-type' => 'application/json');
$request = Requests::post($url,$headers, $json_str);
// var_dump($request);
var_dump($request->status_code);
fputs (STDERR,"*** 終了 ***\n");
// ------------------------------------------------------------------
?>
删除
#! /usr/bin/php
<?php
// ------------------------------------------------------------------
// elastic_delete.php
//
// Oct/12/2018
//
// ------------------------------------------------------------------
fputs (STDERR,"*** 開始 ***\n");
include('Requests/library/Requests.php');
Requests::register_autoloader();
$key_in = $argv[1];
echo $key_in . "\n";
$url = "http://localhost:9200/cities/tochigi/" . $key_in;
$request = Requests::delete($url);
var_dump($request->status_code);
fputs (STDERR,"*** 終了 ***\n");
// ------------------------------------------------------------------
?>