Search and analytics, data ingestion, and visualization – all at your fingertips.

Elasticsearchで普段よく利用するコマンドやクエリの覚書です。 これまで手元のメモ帳に残していましたが増えてきたのでそのままこちらへメモしておきます。 ElasticsearchのAPIを利用した基本操作やアップグレードなどの運用方法。その他、Elasticsearchに関する参考情報をまとめています。 Elasticsearchは7系を使ってます。 スポンサーリンク インデックスの操作 Elasticsearchの操作には言語別の専用クライアントやkibanaがあるが、LInuxのcurlコマンドで操作するのが何だかんだで楽。 クエリに pretty を付けておくとレスポンスが見やすい。 インデックス一覧の確認 curl -XGET localhost:9200/_cat/indices?v インデックス作成 curl -XPUT -H 'Content-Type: appli
Elasticsearchを使おうとすると、まずアプリケーションの仕様にしたがってインデックス定義やマッピング定義を設計しなければならない。これはMySQLを使っていてスキーマを考えるフェーズに相当する。 この時、考えることが非常に多く、いろいろなドキュメントを参照し設計したので、今回はその手順について書いていきたいと思う。 インデックスやマッピングが何かという話は、次の記事を参考に。 Elasticsearchチュートリアル - 不可視点 Mapping and Analysis | Elasticsearch: The Definitive Guide [2.x] | Elastic また対象とするElasticsearchのversionは記事執筆時点の安定版の2.3.5とする。 今回サンプルとする例 実際のプロジェクトを参考例にすることは流石にできないので、今回はブログの記事を検索
例のごとく国土交通省のデータをダウンロードしてきてElasticsearchに突っ込んで検索してみます。 国土数値情報ダウンロードサービス GDALのドキュメント*1を参照するとogr2ogrコマンドでシェープファイルを直接Elasticsearchに投入できそうですが、 マッピング定義をあれこれ変更したりしていろいろやってみましたがGeoShape形式での投入はできず。。。 C++で実装されているのでとりあえず深掘りするのはやめて、GeoJSON形式に変換してPythonスクリプトから投入することにします。 以下の国土交通省のページから日本全国の行政区域データをサウンロードしてきます。 国土数値情報 行政区域データの詳細 シェープファイルファイルのGeoJSON変換は以下のコマンドでできます。 変換するとFeatureCollectionという一塊のJSONオブジェクトとして出力されます
概要 以前Bool Query と Dis Max Query の違いについて書きました。 今回はその中で出てきたMulti Match Queryのtypeの違いについて書きます。 どれも複数のフィールドに対して実行するクエリですが、それぞれ用途が異なります。 環境 Elasticsearch 6.6.0 データ投入 curl -s -H "Content-Type: application/json" \ -XPOST localhost:9200/my_index/my_type/_bulk -d ' {"index": {"_id": "1"}} {"title": "Quick brown rabbits", "body": "Brown rabbits are commonly seen."} {"index": {"_id": "2"}} {"title": "Keeping
はじめに その1ではセットアップから基本的なクエリについて紹介しました。 今回はESで最も使用するであろう、いろいろな検索をしてみます。 ※本稿で使用する環境については前回記事を参照してください また、今回esで日本語を扱うためにkuromojiプラグインを使用するので、 このへんとかを参考にインストールしておきましょう。 ちなみに転置インデックスとかanalyzer/tokenizerとか検索のしくみとかについてはここではふれません。 サンプルデータを用意 まずはサンプル用データを用意します。 user-bulk.jsonという名前でjsonファイルを作成しましょう。 これを元にいろいろ検索してみます。 {"index":{"_index":"user_index","_type":"_doc","_id":"1"}} {"name": "鈴木 太郎","married":false,"
APIの一覧をまとめた資料が見当たらなかったので、APIでできることを把握できるようにAPIの一覧をまとめてみました。 NOTE: バージョン1.x の本家リファレンスを参考にしています。 Elasticsearch の提供している各種APIは、以下の図のように検索やドキュメントの登録だけではなく、各種設定、モニタリング、メンテナンスの為のAPIまで幅広く提供されています。 Elasticsearch API Over Viewdocument apisドキュメントの追加・更新などのドキュメント操作の為のAPI 【document api】 PUT /{index}/{type}/{id} # ドキュメントの追加更新 POST /{index}/{type} # ドキュメントの追加更新(ID自動生成) GET /{index}/{type}/{id} # ドキュメントの取得 GET /{i
検索サイトで、どのようにElasticsearchを活かしてサイトをディレクションするかについて自分の意見をまとめてみました。 まとめてみたと言いいつつ、アタマの整理の過程をダンプしたという体裁になっています。... のでまとまってないかもしれません。 何かの勢いで書いてはならないことを書いてしまわないようにしたため、筆者のドキュメント力とは別の問題として、本来は具体的なもので述べるところ、抽象的な言い方になっているところが多々あります。 一方で、多少リアルな例にしたいと思い、ある程度シーンを絞って記述したところもあるのですが、抽象化との兼ね合いで、論理の飛躍や検証が甘いところもあると思います。 つまるところポエムになっているかもしれません。 また、2019年改訂版としていますが、改訂前のものがあるわけではありません。今後、世の進歩とともに、陳腐化するかもという言い訳でして、2019年現在
SQLとElasticsearchのクエリがそれぞれどう対応しているのか、よく使われると思うものについて大体まとめました。 環境 Elasticsearch 6.2.4 〜 7.5 前提条件 記載する内容は以下の条件を前提とします。 Elasticsearchで検索する際のURLの記載は省略 Elasticsearchでは検索を行う際に以下のようなURLへリクエストします。 {ElasticsearchのURL}/{index名}/_search 例えばSQLでproductというテーブルに対して索引を行っている場合、Elasticsearchでは以下のURLへリクエストを行っています。 http://localhost:9200/product/_search 以降Elasticsearchのリクエスト先URLは記載しませんが、上述のようなURLへリクエストしている前提です。 文字列のデ
詳しい人から見れば大した内容じゃないと思うけど、調べたり試行錯誤した結果をまとめる。(間違いなどがあれば、ご指摘頂けるとありがたいです。) Elasticsearch を何に使っているか 他サービス → API/webhook → 自サーバーの Elasticsearch 以前触れたと思うけど、開発プロジェクトのデータを全部1箇所にまとめて検索出来るようにしていて、そこで Elasticsearch を使っている。 自分の仕事内容としては、時間の4割位を受託開発にあてている。受託開発では、お客様や発注元の開発ベンダーに合わせて色んなツールを使わざるを得なくて、具体的には ChatWork, Backlog, Google Drive とかを使うことが結構多い。それに対して、自分達の開発チーム内部では自分達用のSlackチームがあるし、それ以外にも別のツールを使ってたりしているので、色んなと
Elasticsearch では、すでに日本語で全文検索する為のトークナイザーやノーマライズなどの加工処理で使用するフィルターなどがビルトインまたは、サードパーティ製のプラグインとして多数存在します。 ここでは、日本語全文検索で使用しそうなトークナイザーやフィルターなどを説明します。 主要モジュールNGram Tokenizer N-グラムを提供するトークナイザーです。Elasticsearch にバンドルされています。Japanese (kuromoji) Analysis for Elasticsearch 日本語形態素解析を提供するプラグインです。各種 Analyzer、Tokenizer、TokenFilterが含まれます。cjk_width Token Filter 半角・全角などを統一するためのフィルターです。Elasticsearch にバンドルされています。Lowercas
Google に代表される「キーワードサジェスト」機能を Elasticsearch を前提に日本語向けに設計。 よくある要件サイト内で過去に検索された有効なキーワードをサジェストしたい。入力されたテキストに関連性が高く、過去に検索された回数の多い順でサジェストしたい。最初に入力された言葉の後に空白を入力すると、最初の言葉と一緒に検索される複合語の候補サジェストしたい比較的シンプルな要件のように見えますが。。日本語を対象にしたサジェスト機能を実装する場合、入力途中の日本語のテキスト受けながら、ひらがな、カタカナ(半角・全角)、漢字、ローマ字(大文字・小文字・全角・半角)のコンビネーションを合わせて、関連性の高い言葉を素早くユーザーに提案しなければなりません。以外と難しいのです。。 Elasticsearch にも Completion Suggester と言うサジェスト向けの機能があるの
概要 フランスで行われたElasticのMeetupの動画がYoutubeにあがっていました。 www.youtube.com 公式だと、こちらのページで紹介されています。 www.elastic.co フランスで行われているとはいえ、発表は英語でされています。 しかも、Youtubeなので自動字幕に翻訳機能をかませれば、日本語字幕を表示させて何となく話していることが分かるようにもなります。 せっかく視聴したので、メモをとったログをここに置いておくことにします。 OS編 ストレージ パフォーマンスに関するところで基本のキ。 ディスクのパフォーマンスのベースラインを取得しておく(スループット、レイテンシ) ベースラインを他のノードと比較してみることで、問題が分かることがある ネットワークのファイルシステムは使わないで。(ストレージの仮想化も含みます) ディスクパフォーマンスチューニングについ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに Elasticsearchの公式チュートリアルやってみました。 公式ドキュメント以外にも色々調べながら進めたのですが、「7.0系(type新規作成廃止後)」×「Docker」の記事が少なかったので、備忘も兼ねたまとめです。 Elasticsearchとは Elasticsearchは、オープソースの高スケーラブルな全文検索および分析エンジンです。大容量のデータをすばやく、ほぼリアルタイムで保存、検索、分析できます。通常、検索の機能と要件が複雑なアプリケーションを強化する基礎となるエンジン/技術として使用されます。 (Elast
こんにちは!研究開発部ソフトウェアエンジニアの林田千瑛(@chie8842)です。あまりたくさん飲めないけど日本酒が好きです。 クックパッドが提供するサービスの検索や推薦機能の構築・改善を行っています。 本稿では、クックパッド本体の検索改善や推薦システム構築の傍らで、新規サービスであるクックパッドマート向けの検索システムをつくったので、その際の設計や精度改善の工夫について書きます。 新規サービスクックパッドマートと検索 クックパッドマートは、生鮮食品に特化したECサービスで、ステーションと呼ばれる場所に購入した食品を届けてくれるという特徴をもっています。2018年夏にサービス開始して以来順調にユーザ数を伸ばしています。中でも商品検索機能は、クックパッドマートの追加機能として9月にリリースしました。 検索システムの要件 プロダクトチームの当初の要件は以下のとおりでした。 まずは 1ヶ月で リ
この記事は、Justsystems Advent Calendar 2017の23日目の記事です。 今回はElasticsearchでランキング学習をやってみます。 ランキング学習について ランキング学習は機械学習のモデルを用いて検索ランキングを最適化することをさします。 検索結果のランキングはtf-idfやBM25、ページランクなどを使うことが多いと思いますが、ランキング学習により検索サーバーのクリックログなどに基づき順位の最適化を行うことができます。 その際、処理速度などの問題から順位の最適化はトップN件のリランクという形で行われることが多いです (下図参照)。 Elasticsearchはこのようなランキング学習を行うことができるプラグインが開発されていますが、まだ詳細を確認できていなかったのでこの機会に試してみました。誰かの参考になれば幸いです。 この記事では次のことをします。 T
こんにちは、ホリデー株式会社の内藤です。Holiday ( https://haveagood.holiday/ ) というサービスの開発を行っています。 先日開催した Cookpad TechConf 2016 では、『おでかけスポット検索のむずかしさ - Holiday を支える検索技術』という題で発表を行いました。 おでかけスポット検索のむずかしさ - Holidayを支える検索技術 from Yusuke Naito www.slideshare.net この発表では、 おでかけスポットの検索では、全文検索だけでは満足のいく結果は得られない 地理空間検索に拡張することでよりよい検索体験を作ることが可能 これを実現するための Elasticsearch の機能を紹介 というような内容を紹介しました。 例えば、我々が「中目黒」を思い浮かべた時にイメージするエリア内の住所には、「中目黒」
みなさんこんにちは。フジサワです。前回の記事でお伝えしていたElasticsearchの検証がひと段落しましたので、検証結果をレポートいたします。 連載目次 『全文検索 〜 Elasticsearchとデータ匿名化手法』 『全文検索の探求 Elasticsearch(1) 』: プロジェクト方針およびElasticsearch概要 大量データを検索するサービスでElasticsearchはRDBの代替候補になりうるか?(Elasticsearch vs pg_bigm)』 ←今読んでいる記事 データ匿名化 第1回:匿名化された個人情報とは何なのか データ匿名化 第2回:個人情報は匿名化しても意味がないのではないか? データ匿名化 第3回:個人情報を匿名化するプロセス データ匿名化 第4回:匿名化のために行うデータ項目の一般化とは データ匿名化 第5回:データ匿名化の指標 データ匿名化 第6
概要 Elasticseachに分散表現のベクトルに対する類似文書検索が実装されたということで、以下のElasticのブログ記事を参考に類似文書検索を試してみました。 Text similarity search in Elasticsearch using vector fields | Elastic Blog 類似文書検索とは、与えられたクエリの文書と似ている文書を文書集合内から検索する技術です。この際に必要となるのが「似ている」という概念で、計算機上でどうやって2つの文書間の類似度を数値として表現するかがポイントになります。例えば、互いの文書に出現する単語の一致度や重複度合いを測ったり、TF-IDFやBM25などで文書をベクトル化して比較する方法があります。ただしこれらの方法では、言い換え表現や表記の違いにより同じ意味の単語が異なる単語だと判定されたり、文書の中では重要でない単語に
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く