はてだBlog(仮称)

私的なブログど真ん中のつもりでしたが、気づけばWebサイト系のアプリケーション開発周りで感じたこと寄りの自分メモなどをつれづれ述べています。2020年6月現在、Elasticsearch、pandas、CMSなどに関する話題が多めです。...ですが、だんだんとより私的なプログラムのスニペット置き場になりつつあります。ブログで述べている内容は所属組織で販売している製品などに関するものではなく、また所属する組織の見解を代表するものではありません。

Elasticsearch6.x

Elasticsearchのネストしたaggsの検索結果をflat形式で戻してくれるComposite aggregationのさわり

拙ブログに、「Elasticsearch aggs/aggregations flat」で検索して迷いこむ方がいらっしゃるようです。 「flat」というところから、もしかして?、と思いまして、あらためて Elasticsearch のAggregationのひとつのCompositeに入門してみましたので、せっかく…

Elasticsearchにlivedoorレストランデータセットを取り込んでみる(Pandasで全文検索向けにプレデータ加工あり)

Elasitcsearchで「全文検索」寄りでいろいろ遊んでみようと思うと、程よい公開データが欲しくなります。 そんなデータの一例として、livedoorレストラン DataSetというのがありますので、こちらを利用させてもらって勉強するというのも一つの手かと思います…

Elasticsearch AggregationsとPost filter(post_filter)

一つ前のこちら↓の記事で、ElasticsearchのAggregationsのシンタックス例を挙げてみました。ElasticsearchのAggregationsでしばしば話題になるトピックを忘れていましたので、補足します。 itdepends.hateblo.jp 具体的には、Post filterの話です。 www.elas…

Elasticsearch のAggregations(livedoorレストランデータセットを取り込み試してみる)

livedoor グルメの DataSet をElasticsearchに取り込んで、Aggregations(aggs)を試してみた、の例です。 Aggregationsは、SQLでいうところのgroup byに近い演算です。グループ化や集計対象が、SQL(RDB)の場合はカラムの値なのに対し、転置インデックスの格納…

ElasticsearchのSearchTemplate

Elasticsearchには、Search Templateという、よく使うクエリをElasticsearch自体に登録して、それをテンプレートにして検索クエリの一部を差し替えたような検索ができます。 使い所によって、共通化、タイプ量削減、設計方針の強制、コンセプトの共有、いろ…

Elasticsearch GEO系検索を試してみる2

この記事は、ElasticsearchのGEO系検索のうち、GeoShape DSL(geo_shape)を試してみたものになります。 次の記事の続きです。 itdepends.hateblo.jp また、次の別の記事でGeoPandasを使って(あまりシェープファイルやGeoJSONといったGIS用データ形式がわかっ…

Elasticsearch GEO系検索を試してみる(Geo-polygon、Geo-shape関連)

ElasticsearchのGEO系検索のうち、ポリゴンをからめた検索について試してみました。 www.elastic.co なお、試したのはElasticsearch 6.8ですが、7系に橋渡ししやすいクエリやMapping設定の記述としたつもりです。ただし、紙面の都合・その他の理由によりでve…

Elasticsearch のFunction score queryで得られたスコアに後付けで細工する

はじめに 何度目かのElasticsearchのオレオレスコアリング論まとめです。 この記事をまとめるきっかけとして、Elasticsearch ver7系におけるScript score queryなるもので、今までできなかった(?)BM25などから得られた関連度に細工ができるようで、これは知…

Elasticsearch script query によるフィールド間の関係による検索絞り込み

この記事の内容 本記事では、Elasticsearchのscript query について、クエリ例を列挙しています。 この記事の内容 script queryの使い所(と筆者が思うところ) script query 実例 ◆インデックスの設定 ◆サンプルデータ登録 ◆クエリ例 (1) Aが1より大きいも…

続・Elasticsearchのひらがなでの検索時のトリックについて雑談(漢字ひらがな混在の場合について深掘り と  Multiplexer filterの練習もかねて)

はじめに この記事は、次の記事の続きです。 itdepends.hateblo.jp 前の記事では、ひらがな(読み仮名)→漢字にフォーカスしましたが、ここでは、ひらがなの単語の複合語や漢字とひらがなの混合の複合語などででヒットさせるにはということで膨らませてみま…

Elasticsearchのひらがなでの検索時のトリックについて雑談

はじめに Elasticsearch(kuromoji)では、アナライザーに「kuromoji_readingform」というものがあり、これを使うと「読み」に関して、表記揺れや曖昧検索相当に対応できます。 ただし、この「読み」部分については、実は、kuromojiの形態素解析(分かち書き/to…

Elasticsearchで読みの頭文字で並び替える怠惰な方法の例(just idea)

1. はじめに この記事は、ある検索系の問題設定において、できるだけElasticsearchの機能に閉じて*1手軽にやれるかどうか、という、よくある100本ノック風のチャレンジ(1本だけですが)のメモです。 図らずも、Elasticsearchのアナライズの解説っぽいところ…

検索エンジンでのルックアップ検索型方式に関する講釈とdis_max、constant_score(Elasticsearchを題材に)

はじめに 検索エンジンのスコアリング・チューニングは「関連度」がキモ...だが... このブログの前の記事で、「BM25」のような情報検索における関連度について、「使わせていただく立場」として載自分なりの講釈を述べてみました。 itdepends.hateblo.jp 関…

BM25を分かった気になるかもしれない邪道な解説(?)

1. はじめに このブログではElasticsearchについて時々思い出したように書きなぐっております。 そしてこの記事では、Elasticsearchのデフォルトのスコアリング方式であるBM25について、数式が苦手でも、なんとなく分かった気になる(かもしれない)解説を試…

Elasticsearchの検索スコアリング(boost_mode、score_modeのsumとmultiplyの噛み合わせについてもう少し)

はじめに この記事は次の記事のちょっとだけ補足(つづき)です。 itdepends.hateblo.jp 記事の概要 前の記事では、ひとことでいうとスコアリングは文字通り加点方針(条件に該当するとプラスが重なる方針)がオススメみたいなところを示唆しておりました。 …

Elasticsearchの検索スコアリングの見定めに関する考察

はじめに この記事は次の記事のアナザーバージョン(切り口は少し違うが同じことを別の表現で表したもの)です。 itdepends.hateblo.jp itdepends.hateblo.jp とあるタイプの検索サイトのElasticsearchを使ったサービス設計などに関する私見(2019年改訂版) …

ElasticsearchのPainless Scriptのひとまず簡単な記述例

はじめに Elasticsearch のPainless Scriptを「Score」コンテキストで、どんな記述ができそうかのさわりの部分を確認してみました。 という記事を書いておいてアレですが、この手のものは公式のリファレンスをしっかり読みましょう。 www.elastic.co 本格的…

Elasticsearchで検索時のアナライザーとインデックス時のアナライザーを変えてみる実験

はじめに この記事は、Elasticsearchの日本語検索のアナライザー周りの話の雑談&ちょっとした実験です。図らずもPythonのPandasとPythonのElasticsearch公式クライアントのちょいサンプル紹介にもなっています。 Elasticsearchのバージョンは6.4です。 経緯 …

Elasticsearchのアナライザーtypeのsearch、normal、extendedについてのなんとなくの話

はじめに Elasticsearchの形態素解析(kuromoji)による分かち書き時のアナライザーのtype設定にsearch、normal、extendedというものがあります。 日本語環境で、このブログで記事を書く時に仮置きしている「レストラン検索サイト風サイト」などをイメージする…

検索エンジン Elasticsearchのスコアリングの頑張り方についてmy講釈(というか雑ポエム)

はじめに itdepends.hateblo.jp 上記でfunction_scoreのお試しをしたこともあり、Elasticsearchのスコアリングについて講釈をたれてみたくなったので、記事にしました。 まえおき等 確認したのは、Elasticsearch6.4です。ただし、特にクエリ例などは出てきま…

ElasticsearchでGEO系クエリで遊びます。ついでにfunction_scoreも勉強してみます。

Elasticsearch GEO系クエリとこの記事の概要 GEO系クエリにはいくつかありますが、さくっと試しやすいのが、 geo_bounding_boxとgeo_distanceクエリです。 前者は、検索したい四方の北西と南東の座標を検索条件にあたえて、そのBOX内の座標を持つドキュメン…

駅データ.jpをサンプルに使ったElasticsearchのGeo検索のクエリ例、事前準備のPandas、Pyprojでのデータ加工、Pythonクライアントでのバルクロード、Pythonクライアントでの検索、

はじめに 駅データ.jpという駅の路線データおよび緯度経度の座標を管理してありフリーでも利用可能な*1データが提供されています。 www.ekidata.jp 今回駅データ.jpのデータについて、次のチュートリアル(ひとまず動くサンプルコードを動かしてみるの意)と…

Elasticsearch公式JavaScriptクライアントをブラウザで使ってみる&Vue.js/Vuetifyでなんちゃって検索サービスSPA風をスクラッチ

はじめに Elasticsearchには、JavaScript版の公式クライアントライブラリがあるのですが、ブラウザでも動作するようなので、それで主に検索中心に少し遊んでみました。 といっても、ここ↓にある例のまんまです。 www.elastic.co ただし、さすがに上記のもの…

Elasticsearch percolator再び

Elasticsearch percolatorと私 再びとはなんぞやといいますところ、このブログの中での登場が2回目ですという意味です(笑)。 最初の登場は、こちら。 itdepends.hateblo.jp 上記の説明では、percolatorについては、公式リファレンスの直訳・意訳で検索条件…

Vue.js版ReactiveSearchのお試しコード例の2例目(カスタムクエリ型利用の場合にVuexを使って複数検索BOXまたがりる)- ElasticsearchのPoC

はじめに itdepends.hateblo.jp この記事はこちら↑の続きです。 冒頭のリンクのとおり、Elasticsearchをターゲットにした便利なSPAプラグインであるReactiveSearchを使ってみたのですが、ここではReactiveSearchにクエリを任せる標準方式ではなく、カスタム…

とあるタイプの検索サイトのElasticsearchを使ったサービス設計などに関する私見(2019年改訂版)

検索サイトで、どのようにElasticsearchを活かしてサイトをディレクションするかについて自分の意見をまとめてみました。 まとめてみたと言いいつつ、アタマの整理の過程をダンプしたという体裁になっています。... のでまとまってないかもしれません。 何か…

elasticsearch.js(JavaScript版 Elasticsearch Clients)のAPI早見表的なもの

少々思うことがあり、Elasticsearchの公式JavaScriptクライアントで何ができるのか俯瞰したかったため、APIのパラメータ早見表としてまとめてみました。 画像版 pdf版 JavaScriptのシグネチャ風版 table版 無印 cat、cluster, indices ingest, nodes, snapsh…

Elasticsearchを少々気の利いたgrepとして使ってみる冬休みの実験

はじめに 具体的にどうという話ではないのですが、一部の界隈では、貧弱な環境でgrepコマンドのみで様々なテキスト調査、下手をすれば人間をAIに見立てたNLPを実施しなければならんということが無いでしょうか。 貧弱な環境の解決にはなりませんが、もし近く…

Term Vectors、Multi termvectorsでドキュメント中の単語出現回数を確認(Elasticsearch)

Elasticsearchには、本分である検索もさることながらドキュメント(テキスト)に関する調査も可能です。 調査も...というか、Elasticsearchのような検索エンジンはテキストマイニングの情報技術の結集かと思いますので、テキストマイニングで出てくるような話…

kuromojiプラグインのkuromoji_part_of_speechのspeechの一覧

私はどちらかといえば、Elasticsearchのkuromojiプラグインのkuromoji_part_of_speech についてはデフォルトのままで(つまり、stoptagsの設定は特に行わない)で良いのではないかと考えている派です。 が、当然ですが、案件ややりたいことによる訳で、なに…