Elasticlover

Elastic Stackに関する1週間分のネット情報をまとめるブログです。

今週のElastic News (2018/06/03~2018/06/09)

今週、Elasticについて新たにWEBで観測した情報をまとめます。

今週の注目情報

2018年 人気&嫌われデータベーストップ21 - Stack Overflow

Stack Overflowが1年おきに公開している開発者調査レポートの2018年版となる「 Stack Overflow Developer Survey 2018 」が公開された。同レポートには、10万人を超える開発者から得られたアンケートに基づく、開発者が最も愛しているデータベース、嫌っているデータベース、需要があるデータベースのランキングが掲載されている。 各ランキングは次のとおり。

Stack Overflowの開発者調査レポート2018年版が公開され、DBのランキングでElasticsearchが上位を獲得しました。 (開発者に愛されているDB:3位、需要があるDB:2位)

どちらのランキングもRedis、PostgreSQLとデッドヒートを繰り広げている感じです。 Elasticsearchは去年の集計では全く登場していなかったことを考えると、今最も注目されているDBと呼べるのではないでしょうか! (まぁ、去年は集計対象が、かなり限定されていたという側面もありそうですが…)




公式ブログ

ENGINEERING

Filtering Input Data to Refine Machine Learning Jobs

Elastic machine learning is fast. It's easy. It's accurate. It allows users to analyze mountains of data in near real-time. It's amazing. (Okay, we're biased). But what if you want to be a little more selective about the data that machine learning analyzes?

X-Pack Machine Learningでジョブを実行する際に一部データを学習範囲から除外する方法を紹介している。

記事の題材は各種レスポンスコード件数の異常値を可視化する場面。ボット、Webクローラーが大量の404応答を生成しているが、着目したいのはエンドユーザが生成するステータスコードのみであり、前者を除外するには…というストーリーが展開されている。




Elastic Stack Updates

Brewing in Beats: Introduce Elastic Common Schema

Welcome to Brewing in Beats! With these weekly series, we're keeping you up to date with what's new in Beats, including the latest commits and releases. Did you know that Beats 6.2 is already available? Try it and let us know what you think.

Beatsに関する過去2週間のアップデートサマリ。 気になったのは以下3つ。

  • Elastic Common Schema (ECS)
    • GitHub - elastic/ecs: Elastic Common Schema
    • 各種Elastic Stackで使用するドキュメント(例:Metricbeatで投入されるメトリクス)について共通する部分は形式を統一しよう、という動きでしょうか。
    • Amazon EC2 Container Serviceではないw
  • Dissect processor
    • LogstashのDissect filter相当のことがBeatsでもできるようになる
    • Ingest nodeではなくて、Beats側のプロセッサで処理してElasticsearchに投入するもの
    • Beats6.4から使用可能に
  • Enhance Packetbeat process monitor



Logstash Lines: Support for TCP and SNMPv1 in SNMP input plugin

Welcome to Logstash Lines! With these weekly series, we're keeping you up to date with what's new in Logstash, including the latest commits and releases. Did you know that Logstash 6.2 is already available? Try it and let us know what you think. This update covers the last two weeks.

Beatsに関する過去2週間のアップデートサマリ。 大分淡泊な内容ですが、試験の修正が大変そうな雰囲気。。

  • SNMP input pluginのBeta3からTCPとSNMPv1のサポートを追加
    • これまではUDPのSNMPv2cのみだった
    • プラグインのベータ版をインストールする際にはバージョンを明示的に指定する必要がある
      • $ bin/logstash-plugin install --version 0.1.0.beta3 logstash-input-snmp
  • Test stability
    • ここ数年来、あまりに標準からかけ離れたテストコードを放置してきてしまった
    • テストの信頼性を損なうため、直近はこれら不正なテストの修正を実施している



Keeping up with Kibana: This week in Kibana for June 4th, 2018

TypeScript Support was completed in the Kibana Platform. And with the merge of the saved object API docs into 6.3, we now have the first formal REST APIs in Kibana documented for public use.

Kibanaに関する過去1週間のアップデートサマリ。 なぜか求人情報が載ってて草。




This Week in Elasticsearch and Apache Lucene - 2018-06-08

Cross Cluster Search now preserves remote status code To date, if an exception is thrown on the remote cluster in a cross-cluster search, the local cluster will return a 500 error -- which prevents clients from being made aware of problems with the request (e.g., searching an index that does not exist).

ElasticsearchとLuceneに関する過去1週間のアップデートサマリ。 興味深いのは…

  • Shardsのインデクシングバッファを256MBのハードコード値にしていたが、設定できるように変更した
    • Elasitc{on}の会場でインデクシングのパフォーマンスが低下した件についてエンジニアが調査したところ、この設定値に問題があることが判明した
    • 大量のフィールド(今回の例のように、20kフィールド以上なら確実)を使用するユーザはバッファを増やすと恩恵が受けられる



Qiita

SQLとElasticsearchとのクエリの比較 - Qiita

SQLとElasticsearchのクエリがそれぞれどう対応しているのか、よく使われると思うものについて大体まとめました。 ...

@NAO_MK2さんの記事。

すぐに忘れてしまうので、チートシート的な記事はありがたいです。




fluentd/Elasticsearch/kibanaを試す: (1)インストール - Qiita

はじめに ログ収集、可視化などに良く使われているらしいfluentd, Elasticsearch, kibanaを試してみた時のメモです。 色々と応用が利きそうなので、これらを中心に色々と試してみたいと思います。 冗長化とかは置い...

@tomotagworkさんによる記事。

EFK構成での使い方紹介。 第1回はインストールまで。




fluentd/Elasticsearch/kibanaを試す: (2)基本構成/起動/停止 - Qiita

ログ収集、可視化などに良く使われているらしいfluentd, Elasticsearch, kibanaを試してみた時のメモです。 今回は最低限の構成を行って各コンポーネントの起動/停止、単体での簡易的な動作確認などやってみます。 ※バージョンによって構成ファイルの書き方など結構変わっている部分が多いです。特にfluentdはV0.x(td-agent v2)とV1.0(td-agent ...

同上。

第2回は動作確認と起動/停止方法について。




5分でMacにDockerをインストールしてElasticsearchを起動する - Qiita

巷で話題の[2018年の最先端バックエンドエンジニアに必要なスキルについて考えてみました。](https://qiita.com/poly_soft/items/fb649573c19b7a5c0227)という記事に >現在業務で...

@matyahiko2831さんによる記事。

Docker on macでDockerHubのelasticsearchイメージをpullして起動するまで。




boxとelastic searchを繋いでみた - Qiita

boxの検索には、制限がある。 box community記事より抜粋: Box は、ファイル内のキーワードに依存して、文書ごとに 1 万の全文検索文字を格納します。Box の検索索引では、多数の異なるトークン化およびストップワード削除フィルタが使用されます。 つまり、1万バイトを超える文書内の文字列については検索対象とならず、boxの検索候補に出てきません。...

@daichiiiiiiiさんによる記事。BOXの中の方らしい。

他のbox社員の方がPoCで作成したツール(boxエンタープライズイベントから検索対象のアイテムをElasticsearchへindexingするデモアプリ)の使い方を解説。 注意点として検索結果のセキュリティをどうやって担保するか?の話をされています。

仮にElasticsearch/Kibanaでユーザ権限を管理するとすればX-Pack Securityがありますが、どのように権限を付与するか?は幾つかパターンがあるとはいえ毎回考える必要があると思います。

特に記事に記載されている通り、関連システムが別のユーザ権限管理機能を持っていて、Elastic Stack側はどう合わせるか?は後から導入する際によくありそうな話題だと思います。




文書分類モデルをLTRの特徴量にする - Qiita

以前の記事 で、LTRの概要を書きました。MicrosoftのLTRのデータセットでは、"Qua...

@sugiyamathさんによる記事。

先々週の記事ではLTRの概要を記載するにとどまっていましたが、今回は実際にElasticsearch内のドキュメントに対してヒューリスティクスアノテーションを実行するコード例を記載されています。(よくわかってない)




書籍

Introduction of Elastic Stack 6 これからはじめるデータ収集&分析 (技術書典シリーズ(NextPublishing))

Amazonで石井 葵, 前原 応光, 須田 桂伍のIntroduction of Elastic Stack 6 これからはじめるデータ収集&分析 (技術書典シリーズ(NextPublishing))。アマゾンならポイント還元本が多数。石井 葵, 前原 応光, 須田 桂伍作品ほか、お急ぎ便対象商品は当日お届けも可能。またIntroduction of Elastic Stack 6 これからはじめるデータ収集&分析 (技術書典シリーズ(NextPublishing))もアマゾン配送商品なら通常配送無料。

技術書典4でのりまりま団さんの新作、Introduction of Elastic Stack6インプレスさんから商業ルートで出版されそうな雰囲気です。




その他ブログ記事など

日本語

【Amazon Elasticsearch Service】 手動スナップショットからリストアする方法 | Developers.IO

Developers.IOは、AWSiOS/Androidアプリ、ビッグデータ、Alexa等の最新技術情報からリモートワークや働き方に関する記事まで多彩なトピックを紹介するクラスメソッドのオウンドメディアです。

Divelopers.IOよりユースケさんによる記事。

最後にリンク記載がある通り、Amazon Elasticsearch Service インデックススナップショットの使用 - Amazon Elasticsearch ServiceAWS謹製のドキュメントがありますが、スナップショットのディレクトリ(S3)登録の際以外にも、アクセスポリシーがIAMユーザやIAMロールの場合、各種API実行にAWSリクエスト署名が必要となるとのこと。curlAWSリクエスト署名をサポートしていないため、Pythonのサンプルスクリプトが記載されています。

流石は天下のAWS。Elasticsearch Serviceもドキュメント充実してますね! また読んでみます。




Elasticsearch 5.4でIndexのSnapshotを取得してバックアップ・リストアをする

Elasticsearchでは、Snapshotという機能を使うことでIndexのバックアップを取得することができるらしい。 別ディスクにオンタイムで取得できるらしく、使い勝手はよさそう。 ...

blacknonさんによる記事。

こちらは先ほどとは打って変わって通常のElasticsearchでのバックアップ・リストアの話。




PythonからElasticsearchのbulk処理実行時のエラーを出力、加工する

調べた際に、そのものズバリで引っかからなかったので念の為残しておく。 以下のように、bulk処理をtryで実行し、exceptでhelpers.BulkIndexError.errorsを指定することで、エラーリストを取得できるようだ。...

引き続き、blacknonさんによる記事。

ElasticsearchのPythonクライアント仕様についてのTips。




Elasticsearchのインストール及び設定 その9 スナップショットの作成 - やさぐれSEの技術メモ

設定変更の際や定期的なスナップショットの取得がElasticsearchに不可欠です。...

id:gitya107さんによる記事。

スナップショット関連の話です。 先週はなぜか国内Elastic情報でスナップショット関連が盛り上がりを見せていたことになります。(?)




docker で Elasticsearch - momota.txt

Docker for Windows で Windows10 上に Elasticsearch を動かしたときのメモ。 Docker: 18.03.1-ce-win65 (17513) Elasticsearch: 6.2.4 日本語を扱いたいのでプラグイン kuromoji をインストールする ...

momotaさんによる記事。

ヘッダーがSmells Like Teen Spiritだったりサイトの配色がSolarized Lightだったりで、とにかくエモい。

Docker for WindowsでElasticsearch 6.2.4 with kuromojiなコンテナを上げて、Pythonクライアントからcsv登録/あいまい検索を実行する方法を紹介しています。




Amazon Connect + Kinesis Firehose + Amazon Elasticsearch

こんにちは。katoです。 今回はAmazon Connectのデータストリーミング機能を利用して、通話イベントの情報をAmazon Elasticsearchに連携していきたいと思います。 ...

クロスパワー社のkatoさんによる記事。

Amazon ConnectからKinesis Firehoseを経由してAmazon Elasticsearch Serviceへコンタクトイベントをストリーミングする方法を紹介しています。 最終的なダッシュボードとして、以下を表示するダッシュボードを示しています。

  • コンタクトイベントの数
  • 通話時間の平均
    • ユーザ別
    • 電話番号別
  • 時間ごとのアウトバウンド
  • 時間ごとのインバウンド

なお、Amazon Connectはコンタクトセンターを提供するサービスで、詳細は公式サイトを参照のこと。




英語

What's New in Grafana v5.2

Feature & improvement highlights for Grafana v5.2

なんと、Grafanaが新バージョン5.2でElasticsearchのAlerting機能をサポートすることになりました。 X-Pack Alertingにお金を払えないんです…という状況な方には朗報になるかも?




Noteworthy at Compose - Tuning the Elasticsearch data browser

This is your weekly summary of Compose news for those changes and updates which can make your life easier. In this edition, changes in Compose's Elasticsearch data browser, the final Write Stuff cycle bonus is awarded and we look at the past week's Compose Articles. Elasticsearch changes Compose's Elasticsearch comes

IBM ComposeにおけるElasticsearch関連のアップデート情報。

  • Elasticsearchインデックス用のデータブラウザからForce Mergeオプションを削除
  • インデックスを作成するときにデフォルトのレプリカ数を1に変更した



Elasticsearch Performance Tuning - Logz.io

Once it's running, you'll likely find that Elasticsearch performance starts to suffer over time. In order to maintain your cluster, you'll need to set up monitors to alert you to any warning signs so that you can proactively handle available maintenance windows. Here's how.

Logz.io社のQuintessence Anxさんによる記事。

なお、Logz.io社はElastic StackのSaaS等を提供している会社のようです。企業ブログを見ると確かにElastic Stackの話題がずらり。

とりあえず使い始めたElasticsearchを使い始めてしばらくするとパフォーマンスの低下は免れず、改善について検討する必要があります。本記事で紹介されている内容を概説すると以下です。

  • トレードオフがあることを理解する
    • 全てを最適化することは不可能であり、ビジネスの優先順位とクラスタの使い方を定期的に評価/比較すること
  • キューを追跡する
    • インデックス、検索、バルクのキューの深さを注視すること
      • キューの状態はできるだけ空であることが望ましい
      • X-Pack Monitoringを使用する
  • あまりにも多くのメモリを設定しないこと
    • Elasticsearchで使用するJVMのヒープサイズについて最大値と最小値を同じにすること
    • また、物理メモリの半分以下をヒープサイズにすること
    • Elasticsearch: The Definitive Guideには64GBのRAMが理想的だと記載している
  • フラッシュはあまり頻繁にしないこと
    • デフォルトではドキュメントをディスクにフラッシュして検索可能にするまでの間隔(refresh_interval)は1秒に設定されているが、その値を30秒以上に上げることでインデックスのスループットを大幅に向上させることができる
  • クラスタの合計ディスク容量サイジングで考慮すべき事項
    • Low watermark
      • 個々のノードのディスク使用率が85%(設定で変更可)に達するとElasticsearchはそのノードへの新しいシャードの送信を停止するが、既存シャードにはデータが送られており、サイズが大きくなることに注意すること
    • High watermark
      • 個々のノードのディスク使用率が90%に達すると、クラスタはそのノードからほかのノードにシャードを再割り当てしようとする
        • クラスタの状態とほかのノードで使用可能な容量によっては、パフォーマンスに悪影響を及ぼす可能性がある
    • Replicas
      • レプリカの件数に応じて、線形に、より多くの容量が必要となる
        • 各レプリカは各インデックスの完全コピーであるため、個数分の同じ容量のスペースが必要になる
    • Sharding
      • より大きなシャードはインデックスされたデータを格納する方が効率的である(?)
      • シャーディングの設定はノード間で大きく異なる可能性があるため、必要なシャードの数を試してみる必要がある
        • ノードに障害が発生すると、使用可能なディスクが十分に存在する場合、シャードが他のノードに再割り当てされるため、予期しないディスク消費になることがある
  • キャッシュを適切に予測する

性能面について現在よりどころにできる文献はElasticsearch: The Definitive Guideしかないと思っているのですが、新しいバージョンについて出ることはないのかな…根本的に変わる部分がないので更新版は出しませんよ、というスタンスだとは理解していますが。




cinhtau.net

The aggregations framework helps provide aggregated data based on a search query. Using aggregations on my audit data gives me insight who used my Elasticsea...

TAN-VINH NGUYENさんによる記事。

ElasticsearchのJavaクライアントの使用方法を紹介しています。中々見かけないので貴重な気がします。




How to Migrate ElasticSearch Data Using Logstash - Alibaba Cloud - Medium

Engineers often find themselves in a position where they need to migrate data in ElasticSearch. The purpose of migrating a cluster could be to ensure data backup and system upgrade. There are just as many methods as there are reasons to perform the migration; for example, you can use ElasticSearch-dump, snapshot, or even reindex method.

Alibaba Cloudの担当者による記事。

あるElasticsearch(オンプレ)内のインデックスを別のElasticsearch(クラウド)へLogstashを用いて移行する内容です。

Alibaba Groupはいわゆる中国版Amazonで、AWSよろしくクラウドサービスもやっている巨大企業です。流石にElasticsearchのマネージドサービスをやっていることは知りませんでした。ドキュメントを見る限りではElasticsearch5.5.3が最新のようです。 ちょい古めですが、中国向けのサービスならあり?




Build a Serverless GeoSearch GraphQL API using AWS AppSync & Elasticsearch

In this tutorial, we're going to build an Elasticsearch-backed GraphQL API on AWS AppSync. All using the Serverless Framework. AppSync offers the ability to create serverless GraphQL APIs with much less backend code than previously possible.

フリーランスコンサルタントAndrew Griffithsさんによる記事。

serverless frameworkを使って緯度経度を使った地図検索GraphQL APIを作る方法を紹介しています。

severless frameworkはLambda関数などを作成できるツールで、サーバーレスなのにローカルでもテストできる!など話題になったのも記憶に新しいです。




3 tips for increasing search engine relevance in ElasticSearch

Written by Alexander Junger, Software Engineer Backend A couple of sprints ago my colleague and I were tasked with building a search engine for our new Balance food tracking app . Pulling out your smartphone and opening an app every time you consume your delicious gluten-free green smoothie requires some discipline.

Runtastic社のTech Teamによる記事です。

Runtastic Balanceのアプリ内検索エンジンを構築した際に得られた幾つかの知見を共有しています。




Simone Scarduzio's answer to What strategies did you use to improve Elasticsearch reliability? - Quora

ReadonlyRESTのLead DeveloperであるSimone Scarduzioさんの記事(...というより質問サイトの回答)。

Elasticsearchの可用性/完全性を担保するためにどうすべきか、外部SSOT(Single source of truth)として使用する際にどのようなアーキテクチャを採用すべきか、などが記載されています。

ReadonlyRESTはElasticsearch/Kibanaのセキュリティ関連プラグインのようです。 ユーザログイン機能などを担当するもので、単一ユーザの範囲であれば無償で利用できる模様。X-Pack Securityと比較してどうか?などは不明ですが、試してみる価値はありそう。




Setup ELK for NGINX logs with Elasticsearch, Logstash, and Kibana

ELK Elastic stack is a popular open-source solution for analyzing weblogs. In this blog post, I describe how to setup Elasticsearch, Logstash and Kibana on a barebones VPS to analyze NGINX access logs. I don't dwell on details but instead focus on things you need to get up and running with ELK-powered log analysis quickly.

WEB開発コンサルタントであるPaweł Urbanekさんによる記事。

Ubuntu 16.04にElastic Stackを構築して、nginxのログを可視化するまでの方法を紹介しています。




7 things to consider for improving ElasticSearch query performance

Nested fields are read performant compared to parent child documents. For instance, in the project I worked with our initial data model was parent-child. In a single query, our use case was to fetch the parent document matching the query criteria along with the child documents associated with it.

ThoughtworksのシニアコンサルタントであるSravanthi Naraharisettiさんによる記事。

Elasticsearchのクエリパフォーマンスを改善する際に考慮すべき7つの項目を紹介しています。項目は以下の通り。

  • 入れ子対親子
    • 親子ドキュメントは使わず、入れ子のドキュメントにすることでパフォーマンスが大幅に向上する
  • クラスタトポロジ
    • シャード数とノード数を適切に選択する
    • ノードについては、専任のコーディネートノードとデータノードを用意する
  • スワップを避ける
    • bootstrap.memory_locktrueに設定し、スワップを制御すること
  • マージを強制する
    • 検索やインデックス作成のリクエストが少なくなる夜間などピーク以外の時間にForce Merge APIをトリガーし、シャードごとのセグメント数を減らすこと
  • リフレッシュ間隔を調整する
    • デフォルトは1秒で検索可能となるが、調整する
  • terms aggregationクエリのパフォーマンス向上
    • クエリにterms aggregationがある場合は該当のフィールドでeager_global_ordinals: trueを設定することを検討する
  • range aggregationを最適化する
    • クエリにrange aggregationがある場合は、必要なデータが事前にindexされていることを確認すること



Searching with things not strings

Using elasticsearch's forthcoming annotated_text field to explore Wikipedia contents.

Elasticの中の人であろうMARK HARWOODさんによる動画。

Elasticsearch 7.xより導入されるannotated_text fieldについて、どういうものなのか紹介しています。 主に文章の中で注記をつけることができる機能で、注記部分を使って検索することができるようになる機能…なんでしょうか。まだよくわかっていません。

New Annotated_text field type by markharwood · Pull Request #30364 · elastic/elasticsearch · GitHubなどで詳しい議論もなされています。参考までに。




英語以外

Utilizando o ELK Stack como ferramenta de Business Intelligence

Como integrar um app Ruby on Rails pelo docker com o ELK Stack Conheço o ELK Stack (Elasticsearch, Logstash, Kibana) a algum tempo e como desenvolvedor sempre tive a - errada - ideia que este conjunto de ferramentas fosse destinado apenas à análise de logs e acompanhamento da saúde das aplicações.

Rock ContentのエンジニアであるHugo Diasさんによる記事。

Ruby on RailsのアプリとElastic StackをDocker上にコンテナで立ち上げ、結合する方法を紹介しています。 具体的にはrailsアプリのロガーがLogstashにログ情報を送信し、Elasticsearchに投入するという内容です。




Instalando o Elasticsearch em um container Docker - Thiago Adriano - Medium

Veja nesse artigo como criar um ambiente com Elasticsearch utilizando o Docker Recentemente eu criei um artigo apresentando o Elasticsearch, hoje irei demonstrar como criar um ambiente com Elasticsearch utilizando o Docker. Caso tenha interesse em ler o meu primeiro artigo, segue o seu link: Introdução ao Elasticsearch.

Thiago Adrianoさんによる記事。

Elastic社の提供する公式DockerレポジトリからElasticsearchをpullして起動、簡単な動作確認をするまでの方法を紹介しています。




先週の漏れ

Getting started with Elasticsearch in Python - Towards Data Science

In this post, I am going to discuss Elasticsearch and how you can integrate it with different Python apps. ElasticSearch (ES) is a distributed and highly available open-source search engine that is built on top of Apache Lucene.

Adnan Siddiqiさんによる記事。

PythonクライアントによるElasticsearchへのデータ投入および検索の方法を紹介しています。ついでにWebスクレイピングも。

適宜、初学者に対するフォローが記載されるので良いです。

また、REST APIをたたくときはPOSTMANを使うのがオススメだよ、とかChromeのElasticSearch Toolboxを使えばElasticsearch内のデータを簡単に見れるよ、など紹介しています。 (どちらもKibanaを用意できるならDevtoolやDiscoverで十分と思いますが…後者はだいぶアップデート状況も古いようなので使わない方が良さそう。)

And if you are going crazy or your girlfriend have dumped you, you can burn the entire world by running curl -XDELETE localhost:9200/_all from command-line.

エモい。




Fast Order Search Using Yelp's Data Pipeline and Elasticsearch

Fast Order Search Using Yelp's Data Pipeline and Elasticsearch Dmitriy Kunitskiy, Software Engineer Jun 1, 2018 Since its inception in 2013, Yelp has grown its transactions platform to tens of...

YelpのエンジニアであるDmitry Kunitskiyさんによる記事。

Yelpは長らくMySQLを利用していたが、いつしかそれは遅く煩わしいものになっていた…そこでElasticsearchにリアルタイムでデータを反映、検索することでパフォーマンスが改善できたよ!という記事だと思います。いかんせん長くて全部読み切る前にバテてしまいました…。

Yelpは国際的に展開している各種ローカルサービスのレビューサイトで、このあたりの記事をご覧になられると背景が理解できると思います。




今週はこのあたりで。 平日にもちょっとずつ調べておくべきなんだけど、週末に一気にやってしまう癖をやめたい。