
前回、色々いじった続きでして、何をどうすればどうなるのかさっぱりわからないので、使いそうな機能を調べてメモしておきたいと思います。Mysqlであれば、例えばdescribe table_nameだったりとか、色々使う機能をElasticSearchに置き換えるとどうしたらいいのか?っていうのを予め調べておきたいと思います。
index一覧を表示する
要は、MySQLでいうところのshow databases ですかね。_cat/indicesで表示できます。
http://{サーバーのアドレス}:9200/_cat/indices にアクセスする
###表示結果
yellow open index1 vLzMftUORf6K63dXAeE1zg 5 1 1 0 6.2kb 6.2kb
green open .kibana_1 iDYYpGB_SNyhHcAB832lMA 1 0 5 0 20.7kb 20.7kb
yellow open index2 pLG1pN-3QbmT1YECMqGymA 5 1 1 0 5kb 5kb
yellow open index3 y6n-JiS4S5GEP4kKr-3G-w 5 1 3 0 63.6kb 63.6kb
yellow open index4 VaiiiQFzR6yPbE1jyDNBqg 5 1 1 0 22.8kb 22.8kb
green open .kibana_task_manager e1cAJPc7RbmTSllfYfV4Ug 1 0 2 0 12.6kb 12.6kb
あぁ、確かにindexの一覧が出ますね。。。ちなみに、クエリでs=indexってつけると、index名でソートできるらしいですよ。helpを投げると使い方が出るとか。
ところで。。。。。。。私が適当に作ったものには、yellowと書いてあるんですけど。。みたところ、greenは良さげな雰囲気が出てますが、yellowって微妙ですよ。このindexって意味では。。。色について調べてみると。。
ElasticSearchのindexがyellowの状態とは?
すべてのデータが利用可能ではあるものの、replicasが割り当てられていない状態のことらしい。
ちなみにredになると、動きはするがデータの一部が使えないという、障害的なノリが出てる状態らしい。
以下のありがたいウェブサイトに書いてありました。ありがたやー

まぁ、このあたりは今後覚えながらやるとして、一旦動くのでそれはそれでいいとしておきます。
特定のindexの詳細を見る
ただindexを指定するだけで、mappingの詳細を教えてくれる。ちなみに、普通にtextとしてのjsonが返ってくるけど、prettyをクエリに投げつけると、プリティーにインデントした結果を返してくれる
http://{サーバーのアドレス}:9200/{index名}?pretty にアクセスする。
Mysqlで言うところのdescribe table_name と同じ
###以下レスポンス内容
{
"index名" : {
"aliases" : { },
"mappings" : {
"mamama" : {
"properties" : {
"test1" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"test2" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
}
},
"settings" : {
"index" : {
〜〜〜〜以下略
indexを削除する
削除の際、methodはDELETEを使うので、PHPでサンプルソースを書いて実行してみます。
indexがあることをブラウザで確認して、以下を実行
$path='http://{サーバーのアドレス}:9200/{index名}?pretty';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $path);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
$res = curl_exec($curl);
curl_close($curl);
echo $res."\n\n\n";
####以下、レスポンス
{
"acknowledged" : true
}
なんか、寂しいレスポンスですね。。。あっそ。。みたいなそっけないレスポンスです。。
acknowledgedって、認められたとか、そんな感じの意味らしいです。削除要求が認められたのでしょう。
ほんなら、元々アクセスできていたindexのページを見てみると、以下のような感じに。
{
"error" : {
"root_cause" : [
{
"type" : "index_not_found_exception",
"reason" : "no such index",
"resource.type" : "index_or_alias",
"resource.id" : "{index名}",
"index_uuid" : "_na_",
"index" : "{index名}"
}
],
"type" : "index_not_found_exception",
"reason" : "no such index",
"resource.type" : "index_or_alias",
"resource.id" : "{index名}",
"index_uuid" : "_na_",
"index" : "{index名}"
},
"status" : 404
}
何言ってのかよくわからないですが、404と書いてある時点で、ねーよって意味なんでしょう。
404の破壊力はすばらしいものがありますね。ほんと。
indexを作成する
MySQLでいうところのcreate tableのことです。
別にそのまま入れても勝手に作ってくれはするのですが、きちんと定義しておいたほうがよさそうです。
検索とか、どの部分にトークナイズを行うかどうかとかの設定もあるようです。このあたりはSolrも同じですね。
PHPで試しに作ってみました
//shardsの設定を入れる。適当に。
$data["settings"]["number_of_shards"]=3;
$data["settings"]["number_of_replicas"]=1;
//メインのテーブルの要件を決める
$data["mappings"]["test_type"]["properties"]["field1"]["type"]='text';
$data["mappings"]["test_type"]["properties"]["field1"]["fields"]["keyword"]["type"]='keyword';
$data["mappings"]["test_type"]["properties"]["field1"]["fields"]["keyword"]["ignore_above"]=256;
$data["mappings"]["test_type"]["properties"]["field2"]["type"]='text';
$data["mappings"]["test_type"]["properties"]["field2"]["fields"]["keyword"]["type"]='keyword';
$data["mappings"]["test_type"]["properties"]["field2"]["fields"]["keyword"]["ignore_above"]=256;
$json=json_encode($data);
$path='http://{サーバーのアドレス}:9200/new_index_name';
$header = array(
"Content-Type: application/json"
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $path);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl,CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
$res = curl_exec($curl);
curl_close($curl);
echo $res."\n\n\n";
・・・・・実行結果
{"acknowledged":true,"shards_acknowledged":true,"index":"new_index_name"}
・・・・・インデックスの確認
{
"new_index_name" : {
"aliases" : { },
"mappings" : {
"test_type" : {
"properties" : {
"field1" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"field2" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
}
},
"settings" : {
"index" : {
"creation_date" : "1572715920144",
"number_of_shards" : "3",
"number_of_replicas" : "1",
"uuid" : "O4HwLJOhR9qIGrPdNrb-EA",
"version" : {
"created" : "6080499"
},
"provided_name" : "new_index_name"
}
}
}
}
ちゃんとできました。
APIの利用権限を変える
APIに書き込んだり読んだりとか、そういうことを許可したり拒否したりする設定の模様。
上記でmappingしたindexに対し、拒否した後に書き込んで見る
///APIをcloseする
$path='http://{サーバーのアドレス}:9200/new_index_name/_close';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $path);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
$res = curl_exec($curl);
curl_close($curl);
echo $res."\n\n\n";
...実行結果
{"acknowledged":true}
///データを投げてみる
$data["field1"]='field1_data';
$data["field2"]='field2_data';
$json=json_encode($data);
echo $json;
$path='http://{サーバーのアドレス}:9200/new_index_name/test_type';
$header = array(
"Content-Type: application/json"
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $path);
curl_setopt($curl,CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
//curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
$res = curl_exec($curl);
curl_close($curl);
echo $res."\n\n\n";
....実行結果
{"field1":"field1_data","field2":"field2_data"}{"error":{"root_cause":[{"type":"index_closed_exception","reason":"closed","index_uuid":"O4HwLJOhR9qIGrPdNrb-EA","index":"new_index_name"}],"type":"index_closed_exception","reason":"closed","index_uuid":"O4HwLJOhR9qIGrPdNrb-EA","index":"new_index_name"},"status":400}
確かに、closedとエラーメッセージが出ている。ちゃんと拒否できてるようです。
今度は許可してみます
$path='http://{サーバーのアドレス}:9200/new_index_name/_open?pretty';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $path);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
$res = curl_exec($curl);
curl_close($curl);
echo $res."\n\n\n";
.....実行結果
{
"acknowledged" : true,
"shards_acknowledged" : true
}
....データを送ってみる
{"field1":"field1_data","field2":"field2_data"}{
"_index" : "new_index_name",
"_type" : "test_type",
"_id" : "kE5KLW4Bh-R-D_zyi4bC",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 2
}
正常に投稿できました。よかった。
特定のindexのtype一覧を取得する
同じカテゴリの記事
コメント
<a href="http://www.g5zl161o68efa0o2o022wc75e238ysjzs.org/">aoypiemfizc</a>
oypiemfizc http://www.g5zl161o68efa0o2o022wc75e238ysjzs.org/
[url=http://www.g5zl161o68efa0o2o022wc75e238ysjzs.org/]uoypiemfizc[/url]
[url=http://www.g7hqw87839o2b9j0mjnsj44nx9735k7ks.org/]uxojjhbqcpw[/url]
xojjhbqcpw http://www.g7hqw87839o2b9j0mjnsj44nx9735k7ks.org/
<a href="http://www.g7hqw87839o2b9j0mjnsj44nx9735k7ks.org/">axojjhbqcpw</a>
<a href="http://www.gx8m9i3xf8f7n4ak27z6w96617hv53kis.org/">ahpewvdcws</a>
hpewvdcws http://www.gx8m9i3xf8f7n4ak27z6w96617hv53kis.org/
[url=http://www.gx8m9i3xf8f7n4ak27z6w96617hv53kis.org/]uhpewvdcws[/url]
<a href="http://www.g801odi1gwd4z0350l4ku4edi636z6j5s.org/">awikbnyxed</a>
wikbnyxed http://www.g801odi1gwd4z0350l4ku4edi636z6j5s.org/
[url=http://www.g801odi1gwd4z0350l4ku4edi636z6j5s.org/]uwikbnyxed[/url]
<a href="http://www.gyk2kb5ib033l7wefs500938bhx8f270s.org/">alksthffwg</a>
lksthffwg http://www.gyk2kb5ib033l7wefs500938bhx8f270s.org/
[url=http://www.gyk2kb5ib033l7wefs500938bhx8f270s.org/]ulksthffwg[/url]
gxmwsdwz http://www.gyxuknl6i482sqm1e20n40n0s043t892s.org/
[url=http://www.gyxuknl6i482sqm1e20n40n0s043t892s.org/]ugxmwsdwz[/url]
<a href="http://www.gyxuknl6i482sqm1e20n40n0s043t892s.org/">agxmwsdwz</a>
[url=http://www.g89j2w9r0s9au0zxep15q904n652x6sos.org/]uicikcxtfc[/url]
<a href="http://www.g89j2w9r0s9au0zxep15q904n652x6sos.org/">aicikcxtfc</a>
icikcxtfc http://www.g89j2w9r0s9au0zxep15q904n652x6sos.org/
ombsdtbvn http://www.g462jj4s8185nfb6838jjpvo6p1io0j2s.org/
<a href="http://www.g462jj4s8185nfb6838jjpvo6p1io0j2s.org/">aombsdtbvn</a>
[url=http://www.g462jj4s8185nfb6838jjpvo6p1io0j2s.org/]uombsdtbvn[/url]
[url=http://www.g0job1737eogor9t3w481e499d8qw26ws.org/]urqxyfenir[/url]
<a href="http://www.g0job1737eogor9t3w481e499d8qw26ws.org/">arqxyfenir</a>
rqxyfenir http://www.g0job1737eogor9t3w481e499d8qw26ws.org/
<a href="http://www.gi33xdj0uc3p3rg81pus04c679i2541ts.org/">atroedcxscp</a>
[url=http://www.gi33xdj0uc3p3rg81pus04c679i2541ts.org/]utroedcxscp[/url]
troedcxscp http://www.gi33xdj0uc3p3rg81pus04c679i2541ts.org/