SpringDataelasticsearch学習ドキュメントSpring Data Elasticsearch 4.0
13013 ワード
SpringDatelasticsearchラーニングドキュメント
主にSpring Data Elasticsearch 4.0バージョンに基づいて、まず最新のパッケージをインポート
バージョン対応
簡単なyml構成OKです.次に、エンティティが主な構成entityに対応する例を書く準備をします.
@Documentクラスレベル主要構成elasticsearchインデックスライブラリマッピングオブジェクト主要構成内容: indexName:インデックスの名前 type:4.0バージョンで が廃止されました shards:インデックスのスライス数 refreshIntervall:インデックスのリフレッシュ間隔.インデックス作成に使用します.デフォルトは「1 s」 です. createIndex:インデックスを作成するかどうかは、起動時に自動的に構成され、インデックスが存在する場合はエラーメッセージが表示され、デフォルト値はtrueです. versionType:バージョン構成デフォルトEXTERNAL、これは を使用していません
属性定義@Fieldはフィールド属性を表し、@Idはデータの唯一のフラグである@Fieldのnameはフィールドを表すelasticsearchのフィールド名はesの中でaのフィールドがbの上にマッピングできることを意味しtypeはフィールドのタイプを表す(Text,Keyword,Long,Integer,Short,Byte,Double,Float,Half_Float,Scaled_Float,Date,Date_Nanos,Booleanなど...これは自分で公式サイトを調べることができます)formatは日付のフォーマットstoreに対してフィールドをesに記録するかどうかを表し、analyzer定義クエリーで使用されていない分詞器属性上@GeoPointは地理的タイプがGeoPointでdao層に似た使い方を継承するElasticsearchRepositoryがクエリーesで提供できるデフォルトクエリーが強いfindByTargetsOrderByDateDescなどを自分で書く必要はありません.これはTargetsですべてを検索し、dateで時間順に簡単なアルパカの名前で検索して必要なデータの詳細は公式サイトを参照してください.
もちろん、自分で文を書いて検索しても大丈夫です.
これはjpaのような方法で実行文を取ります;インデックスエンティティを検索します.公式サイトのアドレス:公式サイトの転送は次回まで書き続けるのがおっくうです
主にSpring Data Elasticsearch 4.0バージョンに基づいて、まず最新のパッケージをインポート
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
バージョン対応
spring:
elasticsearch:
rest:
uris: http://127.0.0.1:9200
簡単なyml構成OKです.次に、エンティティが主な構成entityに対応する例を書く準備をします.
package cn.sys.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.elasticsearch.common.geo.GeoPoint;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
@ToString
// indexname , aaa
@Document(indexName = "#{EsConfig.event}", shards = 5, replicas = 1, createIndex = false)
public class Event extends BaseEntity{
@Id
private String id;
@Field(type = FieldType.Text, analyzer = "ik_max_word")
private String name;
@Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss")
private String date;
@Field(type = FieldType.Keyword)
private String locations;
@GeoPointField
private GeoPoint lonlat;
@Field(type = FieldType.Keyword)
private String sources;
@Field(type = FieldType.Keyword)
@JsonFormat(shape = JsonFormat.Shape.ARRAY)
private List<String> targets;
}
@Documentクラスレベル主要構成elasticsearchインデックスライブラリマッピングオブジェクト主要構成内容:
属性定義@Fieldはフィールド属性を表し、@Idはデータの唯一のフラグである@Fieldのnameはフィールドを表すelasticsearchのフィールド名はesの中でaのフィールドがbの上にマッピングできることを意味しtypeはフィールドのタイプを表す(Text,Keyword,Long,Integer,Short,Byte,Double,Float,Half_Float,Scaled_Float,Date,Date_Nanos,Booleanなど...これは自分で公式サイトを調べることができます)formatは日付のフォーマットstoreに対してフィールドをesに記録するかどうかを表し、analyzer定義クエリーで使用されていない分詞器属性上@GeoPointは地理的タイプがGeoPointでdao層に似た使い方を継承するElasticsearchRepositoryがクエリーesで提供できるデフォルトクエリーが強いfindByTargetsOrderByDateDescなどを自分で書く必要はありません.これはTargetsですべてを検索し、dateで時間順に簡単なアルパカの名前で検索して必要なデータの詳細は公式サイトを参照してください.
package cn.sys.dao;
import cn.sys.entity.Event;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface IEventDao extends ElasticsearchRepository<Event,String> {
/**
* targetId
* @param targetId
* @return
*/
List<Event> findByTargetsOrderByDateDesc(String targetId);
}
もちろん、自分で文を書いて検索しても大丈夫です.
@Query("{ \"bool\": {\"must\": [{ \"match\": { \"events.name\": \"?0\"}},{ \"bool\": { \"must_not\": [ { \"terms\": { \"status\": [ \"?1\" ]}} ] }}]}}")
Page<Article> findAllByEvents(String name,String status,Pageable pageable);
これはjpaのような方法で実行文を取ります;インデックスエンティティを検索します.公式サイトのアドレス:公式サイトの転送は次回まで書き続けるのがおっくうです