SpringDataelasticsearch学習ドキュメントSpring Data Elasticsearch 4.0

13013 ワード

SpringDatelasticsearchラーニングドキュメント
主にSpring Data Elasticsearch 4.0バージョンに基づいて、まず最新のパッケージをインポート
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>

SpringDataelasticsearch 学习文档 Spring Data Elasticsearch 4.0_第1张图片バージョン対応
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インデックスライブラリマッピングオブジェクト主要構成内容:
  • 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で時間順に簡単なアルパカの名前で検索して必要なデータの詳細は公式サイトSpringDataelasticsearch 学习文档 Spring Data Elasticsearch 4.0_第2张图片を参照してください.
    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のような方法で実行文を取ります;インデックスエンティティを検索します.公式サイトのアドレス:公式サイトの転送は次回まで書き続けるのがおっくうです