本連載は、対話インターフェースを利用して新しい形の検索システムを体験してもらうことを目的としています。今回は日本語検索システムでよく用いられるElasticsearchを紹介します。Elasticsearchは大規模なデータに対しても適用可能な検索機能を提供している全文検索エンジンです。特徴としてスケーラブル、検索速度の速さ、検索結果の分析のしやすさ、開発者にとって使いやすいRESTfulなAPIが挙げられます。今回の記事はElasticsearchを用いた日本語検索システムの仕組みから設定の部分までを記述し、次回の記事で実際に動作させてもらいます。 本連載の内容 本連載で紹介予定の内容は次のとおりです。 Step1:Elasticsearchを用いた日本語検索システム 対話型の検索システムを作成するためのStep1として、Elasticsearchを用いた日本語検索システムの構築方法を紹
Elasticsearch実運用時に個人的に気をつけている点をまとめました。 自分でも整理できていない部分がありますので、間違っている点・追加した方が良い点などありましたら教えていただけると非常に助かります。 目次 目次 インデックス・スキーマ設定 スキーマを事前に定義しておく _allの使用は必要な時のみ行う 部分一致検索をしないstringフィールドにはnot_analyzedをつける doc_value:trueをつける できるだけエイリアスを使う 必要に応じてルーティングを行う 本体の設定 ヒープメモリを適切に設定する スワップしないように設定 スプリットブレイン対策を行う field data cacheに上限を与える 検索高速化 Warmerを登録する queryとfilterを使い分ける filterのキャッシュ設定を使い分ける 必要無いフィールドは検索の際に取得しない イン
こんにちは、ホリデー株式会社の内藤です。Holiday ( https://haveagood.holiday/ ) というサービスの開発を行っています。 先日開催した Cookpad TechConf 2016 では、『おでかけスポット検索のむずかしさ - Holiday を支える検索技術』という題で発表を行いました。 おでかけスポット検索のむずかしさ - Holidayを支える検索技術 from Yusuke Naito www.slideshare.net この発表では、 おでかけスポットの検索では、全文検索だけでは満足のいく結果は得られない 地理空間検索に拡張することでよりよい検索体験を作ることが可能 これを実現するための Elasticsearch の機能を紹介 というような内容を紹介しました。 例えば、我々が「中目黒」を思い浮かべた時にイメージするエリア内の住所には、「中目黒」
今回、第1回目の Elasticsearch 入門という事で、今回は「インデックスを設計する際に知っておくべき事」というテーマにしてみました。ここでのインデックスの設計とは RDB のデータベースとかテーブル、ビューの設計に当たるところです。 Elasticsearch は RDB など他のデータベスに比べ、その設計方法も結構独特です。(と言うか同じ事を実現するにしても色々な方法が用意されていて、さらにアプリケーション要件〜システムアーキテクチャ、運用面など広い範囲が関わってくる)RDB との比較も交え解説していきます。 Index で分けるか? Type で分けるか? 例えば、商品情報を保存するインデックスの設計を考えてみましょう。いわゆるRDBの設計で言うところのテーブル設計ですね。おそらくRDBではアプリケーション要件のみが、その設計の中心になるはずです。例えば、商品名や説明、価格情
検索機能を実装するときによく使われているElasticsearchをRailsで使うためのサンプルアプリケーションの作成の手順を作りました。入門レベルです! 🐮 Elasticsearchの導入拙著『Elasticsearch 2.1 + Kibana 4.1 + Marvel のMacへのセットアップ』を良ければご参考ください。 🍄 RailsサンプルアプリケーションRailsのサンプルアプリケーションを作成します。今回は Article(記事) のモデルをもつことにします。 # Railsアプリの作成 rails new elasticsearch_sample --skip-bundle # フォルダを移動 cd elasticsearch_sample # DBの作成 rake db:create # article テーブルの定義を作成 bundle exec rails g
『Elasticsearch Sever』を読んで勉強をしたことの俺得メモです。今回は基本的な概念や基本API、マッピングについてです。 英語ですが、公式ドキュメント『Elasticsearch Reference [2.1]』も充実しているのでななめ読みしています! 詳しい使い方は公式のチュートリアル『Tutorial - jq』あたりがお勧めです 🎃 Elasticsearchの基本概念Elasticsearchの論理的な構成要素検索で使うデータの構成要素のイメージ。 - インデックス - ドキュメントの集合体。リレーショナルDBのテーブルのようなもの。格納された値は、全文検索に最適化される。 - ドキュメントタイプ - 1つのインデックス内に複数のオブジェクトを格納できる。その区分のこと。 - ドキュメント - リレーショナルDBのレコードのようなもの。型(type)は自動で決まる
雰囲気を掴むために、以下は Elastic の哲学 から内容を意訳したものです。この文章は Elastic の開発方針を表すと共に Elastic へコンテトリビュートするときに必要なことも端的に説明しています。 Elasticsearch はとても多くの機能を提供していて、これを書いている時点で大雑把に 100 エンドポイントあり、600 もの JSON データ構造をもちます。Elastic は要求に応じて管理系よりも検索/インデクシングの機能を優先的に実装しています。要求に応じてとは言ったものの、Elastic は Elasticsearch のすべての機能を実装しないかもしれません。ごめんなさい。 私はプルリクエストが好きです。本当にそうですよ。但し、実装するときは先ず コントリビューションガイド を読んでください。API のエンドポイントを実装した上でテストも書いてください。 El
前編(「ビッグデータは“リアルタイム”でこそ価値がある」)では、リアルタイムなビッグデータ解析プロジェクト「CET(Capture EveryThing)」が始まったきっかけから、いまのチームまで組織に焦点を当てました。 後編では、いよいよビッグデータ解析のシステムについて深掘りしていきます。 Amazonのクラウドサービスを活用して作り上げた現状のシステムを捨て、Googleで作る構成に変えようとしているそう。その意図とは。 クラウドサービスのコストパフォーマンスなど、エンジニアやアーキテクトには気になる情報が満載です。 「CET」で基盤構築や分析・集計アプリケーションの開発を行っている、吉田啓二さんに聞きました。 聞き手/構成/編集/写真:小川楓太(NEWPEACE Inc.) AWSで本格的に運用するのは厳しいかなという印象です —— 今回構築された基盤の具体的なシステム構成はどのよ
こんにちは。ホリデー株式会社の内藤です。 ホリデー株式会社では Holiday(https://haveagood.holiday) という新規サービスの開発・運営を行っています。*1 以前投稿した記事でご紹介したように、Holiday では全文検索エンジンとして Elasticsearch を利用しています。 Ruby on Rails で構築されたアプリケーションから Elasticsearch を操作するには、公式 gem である elasticsearch-rails を使うのがとても便利です。 もちろん、Holiday でも活用させてもらっています。 大方の機能についてはこの gem で提供されるもので満足だったのですが、一点だけ、Holiday の運用をしている中で困ることがありました。 それが、サービス公開後のインデックスの再構築です。 elasticsearch-rails
▼ [Elasticsearch] ハートは見つかっても♡が見つからなかったのよ Elasticsearch では。 Elasticsearch + Kibana で調べ物をしていたら「♡」が検索できないことに気が付いた。分かってみれば「そうだよね」って感じの原因だったんだけど、ちょっとメモっておくよ。 再現用に適当なインデックス dummy を作る。 % curl -XPUT 'http://localhost:9200/dummy' {"acknowledged":true} このインデックスのタイプ test へドキュメントを登録していく。id = 1 に「title:♡」、id = 2 に「title:ハート」を登録。 % curl -XPUT 'http://localhost:9200/dummy/test/1' -d '{"title": "♡"}' {"_index":"d
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く