使用Elasticsearch

Elasticsearch是一個在資料庫之上新增搜尋功能的選項。

此選項有一些限制:

  • 它僅適用於SQL資料庫和MongoDB。將來會新增Cassandra和Couchbase支援(歡迎提供幫助!)。
  • 您的資料庫和Elasticsearch之間沒有自動複製機制,因此您的資料可能不同步。結果,您可能需要編寫一些特定的程式碼來同步資料,例如使用Spring @Scheduled註解,使其每天晚上執行。
    • 這也意味著,如果在應用程式外部更改資料庫,則搜尋索引將不同步。在這些情況下,Elasticsearch ReindexerJHipster模組可以提供幫助。

選擇Elasticsearch選項時:

  • Spring Data Jest的幫助下,使用了Spring Data Elasticsearch。Spring Data Jest,可與Elasticsearch的REST API通訊。它會停用Spring Boot的自動設定,而是使用自己的自動設定。
  • “repository”軟體套件具有一個名為”search”的新子軟體套件,其中包含所有Elasticsearch repositories。
  • “User”實體在Elasticsearch中建立索引,您可以使用/api/_search/users/:queryREST端點進行查詢。
  • 當使用實體子產生器時,所生成的實體將由Elasticsearch自動索引,並在REST端點中使用。Angular/React使用者介面中還新增了搜尋功能,因此您可以在CRUD主螢幕中搜索實體。

在開發中使用

在開發中,JHipster與嵌入式Elasticsearch實例一起執行。如果您設定了SPRING_DATA_JEST_URI環境變數(或向您的application-dev.yml新增spring.data.jest.uri屬性),您還可以使用外部Elasticsearch實例。

執行外部Elasticsearch實例的最簡單方法是使用提供的Docker Compose設定:

docker-compose -f src/main/docker/elasticsearch.yml up -d

然後設定一個環境變數指向它:

export SPRING_DATA_JEST_URI=http://localhost:9200

在生產中使用

在生產中,JHipster需要一個外部Elasticsearch實例。預設情況下,應用程式查詢在localhost上執行的Elasticsearch實例。可以使用application-prod.yml檔案中的標準Spring Boot屬性進行設定。

在Heroku上使用

在Heroku上,將Bonsai Elasticsearch設定為附加元件。JHipster被自動設定為與會話。