| 次のリビジョン | 前のリビジョン |
| 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> |
| | |
| |