Amazon ElasticsearchでSQLが使用できるため、SELECTやDELETE句などをPOSTして実行できました。
https://yomon.hatenablog.com/entry/2019/05/esssql#%E4%BD%BF%E3%81%88%E3%82%8BSQL%E5%8F%A5
PHP
1$query = '{"query": "SELECT * FROM index_name LIMIT 10"}'; 2 3$ch = curl_init('elasticsearch_endpoint/_opendistro/_sql'); 4curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json')); 5curl_setopt($ch, CURLOPT_POSTFIELDS, $query); 6curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 7$result=curl_exec($ch); 8curl_close($ch);
今回実現したいのはidカラムの値を指定して一致するデータの削除ですが、特殊記号 +/
が含まれる可能性があり、その場合の削除が正しく行われませんでした。
(以下記事参考にしてエスケープに\
や\
を試しましたが上手くいきませんでした)
https://stackoverflow.com/questions/40222694/escaping-special-characters-in-elasticsearch
https://stackoverflow.com/questions/16205341/symbols-in-query-string-for-elasticsearch
PHP
1//削除される 2$query = '{"query": "DELETE FROM index_name WHERE id=\"12345678\""}'; 3 4//削除されない 5$query = '{"query": "DELETE FROM index_name WHERE id=\"1234+/5678\""}'; 6$query = '{"query": "DELETE FROM index_name WHERE id=\"1234+/5678\""}'; 7$query = '{"query": "DELETE FROM index_name WHERE id=\"1234\+\/5678\""}';
クエリ実行時に特殊記号を含む場合の指定方法をご存じの方いましたら是非教えていただければと思います。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。