次のリビジョン | 前のリビジョン |
elasticsearch [2017/10/24 08:33] – 作成 nullpon | elasticsearch [2021/09/29 10:15] (現在) – [valueの最大値を取得] nullpon |
---|
</code> | </code> |
| |
===== 日本語形態素解析エンジンkuromoriを使う ===== | ===== コマンド ===== |
| |
| httpリクエストを投げて操作するのでcurlなどを使うと良い |
| |
| ==== インデックス(RDBで言うテーブル)一覧 ==== |
| |
| curl 'http://localhost:9200/_cat/indices?v' |
| |
| |
| ==== 適当に1件取得 ==== |
| |
| curl 'http://localhost:9200/<インデックス名>/_search?pretty&size=1' |
| |
| prettyはjsonをニンゲンが見やすくフォーマットする指定。 |
| |
| ==== id指定取得 ==== |
| |
| curl 'http://localhost:9200/<インデックス名>/_doc/<_id>?pretty' |
| |
| ==== valueの最大値を取得 ==== |
| |
| curl -XPOST -H 'Content-type: application/json' -d '{ "aggs": { "max_value": { "max": { "field": "value" } } } }' 'http://localhost:9200/<インデックス名>/_search?size=0' |
| |
| |
| ==== フィールドの存在有無検索 ==== |
| |
| |
| curl -XPOST -H 'Content-type: application/json' -d '{ "query": { "exists": { "field": "field_name" } } }' 'http://localhost:9200/<インデックス名>/_search?pretty&size=1' |
| |
| ==== 範囲検索 ==== |
| |
| curl -XPOST -H 'Content-type: application/json' -d '{ "query": { "range": { "date": { "gt": "2020-01-01T00:00:00+09:00" } } } }' 'http://localhost:9200/<インデックス名>/_search?pretty&size=1' |
| |
| |
| ==== and条件検索 ==== |
| |
| <code> |
| curl -XPOST -H 'Content-type: application/json' -d '{ |
| "query": { |
| "bool": { |
| "must": [ |
| { "range": { "date": { "gt": "2020-01-01T00:00:00+09:00" } } }, |
| { "exists": { "field": "field_bame" } } |
| ] |
| } |
| } |
| }' 'http://localhost:9200/<インデックス名>/_search?pretty&size=1' |
| </code> |
| ===== 日本語形態素解析エンジンkuromojiを使う ===== |
| |
| 日本語のような分かち書きされない言語を全文検索するには、ngramや形態素解析での前処理が必要。 |
| |
* [[https://www.atilika.com/ja/products/kuromoji.html|kuromoji]] | * [[https://www.atilika.com/ja/products/kuromoji.html|kuromoji]] |
* [[https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-kuromoji-tokenizer.html|kuromoji tokenizer]] | * [[https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-kuromoji-tokenizer.html|kuromoji tokenizer]] |
| |
==== インストール ==== | ==== インストール ==== |
| |
| |
==== ユーザ辞書を使う ==== | ==== ユーザ辞書を使う ==== |
| |
| 形態素解析の欠点は、エンジンが知らない謎の単語に対応できないこと。謎単語はユーザ辞書を追加することで対処可能。 |
| |
辞書なしの場合 | 辞書なしの場合 |
} | } |
</code> | </code> |
| |
| ===== エイリアス ===== |
| |
| インデックスに別名を付ける機能、インデックス名の代わりにエイリアス名を指定して検索ができる |
| |
| 一覧 |
| |
| <code> |
| $ curl http://localhost:9200/_cat/aliases?v |
| </code> |
| |
| |
| エイリアス作成 |
| |
| <code> |
| $ curl -X POST -H 'Content-Type: application/json' -d '{ "actions" : [ { "remove" : { "index" : "hoge_old", "alias" : "hoge" } },{ "add" : { "index" : "hoge_new", "alias" : "hoge" } } ] }' http://localhost:9200/_aliases |
| </code> |
| |
| エイリアス削除 |
| <code> |
| curl -X POST -H 'Content-Type: application/json' -d '{ "actions" : [ { "remove" : { "index" : "hoge_old", "alias" : "hoge" } } } ] }' http://localhost:9200/_aliases |
| </code> |
| |
| 別のインデックスに変更 |
| <code> |
| curl -X POST -H 'Content-Type: application/json' -d '{ "actions" : [ { "remove" : { "index" : "hoge_old", "alias" : "hoge" } },{ "add" : { "index" : "hoge_new", "alias" : "hoge" } } ] }' http://localhost:9200/_aliases |
| </code> |
| |
| |