Elasticsearch - 分散検索および分析エンジン

Elasticsearch - 分散検索および分析エンジン

Elasticsearch 入門

Elasticsearch (略して ES) は、全文検索、構造化検索、分析、およびデータの保存に使用されるオープンソースの分散検索および分析エンジンです。 Elasticsearch は Apache Lucene をベースにした検索エンジンで、RESTful API を通じて操作される分散型マルチテナント全文検索エンジンを提供します。

Elasticsearch は、ログおよびトランザクション データの分析、全文検索アプリケーション、構造化データの検索と分析、セキュリティ インテリジェンスでよく使用されます。ビッグデータの分野では、Elasticsearch と Hadoop や Spark などのビッグデータ処理ツールを組み合わせることで、より複雑なデータ分析や処理タスクを実現できます。

Elasticsearch には次の機能があります。

  1. 分散型: Elasticsearch は、高可用性と水平スケーラビリティを実現するために複数のノードに簡単に拡張できる分散システムです。
  2. リアルタイム: Elasticsearch はリアルタイムでデータをインデックスして検索できるため、高速なデータ取得と分析をサポートします。
  3. ドキュメント ストレージ: Elasticsearch は、それぞれが JSON オブジェクトであるドキュメントの形式でデータを保存します。
  4. 強力な検索機能: Elasticsearch は、全文検索、集計分析、地理空間検索など、豊富な検索機能を提供します。
  5. 多言語サポート: Elasticsearch は複数のプログラミング言語のクライアントをサポートしているため、さまざまなアプリケーションとの統合が容易になります。
  6. 拡張性: Elasticsearch は、必要に応じてカスタマイズおよび拡張できる豊富なプラグインと API を提供します。
  7. オープンソース: Elasticsearch はオープンソースであり、活発なコミュニティ サポートと継続的な更新と改善が行われています。

Elasticsearch の主な使用シナリオ:

  1. リアルタイム検索エンジン: Elasticsearch を使用すると、高速な全文検索と関連性の並べ替えをサポートするリアルタイム検索エンジンを構築できます。ドキュメント、ログ、製品情報など、さまざまなタイプのデータ検索に適しています。
  2. ログとインジケーターの分析: Elasticsearch は、大量のログ データとインジケーター データを保存および分析するために使用でき、高速なデータ取得と集約分​​析をサポートし、監視システム、ログ分析、パフォーマンス分析などのシナリオに適しています。
  3. 全文検索エンジン: Elasticsearch は、単語の分割、言語分析、関連性スコアリングなどの複雑な全文検索機能をサポートしており、全文検索エンジンやドキュメント検索システムの構築に適しています。
  4. リアルタイム データ分析: Elasticsearch はリアルタイム データ分析と視覚化に使用でき、複雑なデータ集約と視覚化をサポートし、ビジネス データ分析やリアルタイム監視などのシナリオに適しています。

Elasticsearch の使用

  1. Elasticsearch 依存関係を追加します。プロジェクトの pom.xml ファイルに Elasticsearch 依存関係を追加します。
 <dependencies> <!-- Spring Data Elasticsearch --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> <!-- Elasticsearch的REST客户端--> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency> </dependencies>
  1. Elasticsearch 接続を構成する: application.properties または application.yml ファイルで Elasticsearch 接続情報を構成する:
 spring: data: elasticsearch: cluster-nodes: localhost:9200
  1. エンティティ クラスの作成: Elasticsearch インデックスに対応するエンティティ クラスを作成し、@Document アノテーションでマークします。
 @Document(indexName = "product", createIndex = false) public class Product { @Id private String id; @Field(type = FieldType.Text, fielddata = true) private String name; @Field(type = FieldType.Keyword) private String category; @Field(type = FieldType.Float) private float price; public Product() { } public Product(String id, String name, String category, float price) { this.id = id; this.name = name; this.category = category; this.price = price; } // getter和setter方法public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } }
  1. ElasticsearchRepository を作成する: Elasticsearch の操作を定義するために、ElasticsearchRepository から継承したインターフェースを作成します。
 public interface ProductRepository extends ElasticsearchRepository<Product, String> { // 根据名称查找产品Iterable<Product> findByName(String name); }
  1. ビジネス ロジックを記述する: Elasticsearch データを操作するためにビジネス ロジックで ElasticsearchRepository を使用します。
 @Service public class ProductService { @Autowired private ProductRepository productRepository; public Product saveProduct(Product product) { return productRepository.save(product); } public List<Product> findAllProducts() { return productRepository.findAll(); } public List<Product> findProductByName(String name) { return (List<Product>) productRepository.findByName(name); } public void deleteProduct(String id) { productRepository.deleteById(id); } }
  1. コントローラーでサービスを呼び出します。
 @RestController @RequestMapping("/products") public class ProductController { @Autowired private ProductService productService; @PostMapping public Product saveProduct(@RequestBody Product product) { return productService.saveProduct(product); } @GetMapping public List<Product> getAllProducts() { return productService.findAllProducts(); } @GetMapping("/name/{name}") public List<Product> getProductByName(@PathVariable String name) { return productService.findProductByName(name); } @DeleteMapping("/{id}") public void deleteProduct(@PathVariable String id) { productService.deleteProduct(id); } }

実際の使用では、より複雑なクエリや高度な機能については、ページング、ソート、集計などの Elasticsearch のより高度な機能を活用したり、カスタム クエリ メソッドを記述したり、Elasticsearch のネイティブ クエリ DSL を使用したりする必要があります。

<<:  TraefikをベースにしたKubernetes Ingressネットワークシステムについてお話しましょう

>>:  Kubernetes での AI と機械学習のワークロードの最適化

推薦する

Buyvmは地位を退き、Alipayをサポートし、レビューメカニズムを緩和する

「BuyVM [公式サイト: www.buyvm.net] は、AliPay 決済を全面的にサポート...

ウェブサイトの内部ページランキングがすべて消え、ホームページは正常です。

2013年9月6日、百度ウェブマスタープラットフォームのリー氏が、関連性のない静的検索結果ページを厳...

Meilishuoの助けを借りてTaobaoの顧客サイトのトラフィックを増やす方法についての簡単な説明

一部のウェブマスターは、最近はタオバオで収益を上げることがますます難しくなり、プロモーション チャネ...

ウェブサイトのホームページの価値に影響を与えるいくつかの主要な要因の分析

ご存知のとおり、ウェブサイトを最適化して運用する過程で、ホームページはウェブサイト全体の中で最も重み...

エッジコンピューティングにおける AI の利点

エッジと極端エッジの間でこれがどのように展開するか、また無線アクセス ネットワークにどのような階層が...

華雲データとCSICが「有人深海総合メンテナンスビッグデータプラットフォーム研究開発プロジェクト」を締結

[[264771]] 2019年無錫高レベル人材イノベーション・起業交流会議の期間中、イノベーション...

クラウドに移行する企業: マルチクラウドはより安全ですか?

クラウドコンピューティングは、インターネット、実体経済などのさまざまな分野に浸透し、大きなトレンドと...

budgetnode - 50% オフ / 年間 $12 / 512M メモリ / 20g ハード ドライブ / 1T トラフィック / DDoS 保護

Budgetnode は、サイバーマンデーの週にプロモーションを実施しており、メモリとデータ トラフ...

IoT においてエッジ コンピューティングが重要なのはなぜですか?

この記事はLeiphone.comから転載したものです。再印刷が必要な場合は、Leiphone.co...

20gddos 保護: spartanhost-1.5/256 メモリ/20g ハードディスク/1T トラフィック/G ポート/シアトル

spartanhost.NET は、VPS 事業の年末プロモーションを実施しています。すべての VP...

サービスエッジへの安全なアクセスを実現するクラウドネイティブ ネットワーキングの利点を理解する

クラウド ネイティブの重要性をより深く理解するために、クラウド配信のために同社のセキュア アクセス ...

「知会杯」2019年全国大学金融技術イノベーションコンテスト授賞式および大学金融技術サミットフォーラムが成功裏に終了

2019年12月13日、「知会杯」2019年度全国大学フィンテックイノベーションコンテスト表彰式お...

A5 ソースコード: 2013 年 1 月の無料ウェブサイト構築コードの推奨

A5 ソースコード 2013年1月 無料ウェブサイト構築コード推奨A5 Source Code は皆...

記事をページ分割すると SEO や検索エンジンのクロールに影響しますか?

最近、ウェブサイトが調整され、検索エンジンのスパイダーがクロールできるページ数が多すぎるため、記事の...

草の根の 2B ビジネス経験: 誠実さ、スキル、そして低 B スタイル

ネットには2B(ToB)に関する記事が溢れている。Dark Horse Competitionでは「...