SpringDataelasticsearch 学习文档 Spring Data Elasticsearch 4.0

SpringDataelasticsearch 学习文档

主要基于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索引库映射对象主要配置内容:

  • indexName:索引的名称
  • type:在4.0版本已经弃用
  • shards:索引的分片数
  • refreshIntervall:索引的刷新间隔。用于索引创建。默认值为“ 1s”
  • 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按时间排序
以简单的驼峰命名来查询你所需要的数据
详细的请查看官网
在这里插入图片描述

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的方式取执行语句;查询出索引实体。
官网地址:官网传送
懒得写了下次再说
未完待续

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值