springBoot elasticsearch

elasticsearch

这篇文章参考其他博主Elasticsearch使用笔记

导入依赖

   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

applicatio.yml配置文件

单节点

spring:
  data:
    elasticsearch:
      cluster-name: es
      cluster-nodes: "127.0.0.1:9300"

多节点

#ES集群配置
spring.data.elasticsearch.cluster-name=es-tanhua-cluster
spring.data.elasticsearch.cluster-nodes=192.168.31.81:9300,192.168.31.81:9301,192.168.31.81:9302

pojo类(es存储内容)

@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(indexName = "user",type = "user_test",shards = 5,replicas = 1)
public class User {

    @Id  //主键id
    private Long userId;

    @GeoPointField  //地理位置
    private GeoPoint geoPoint;

    @Field(type= FieldType.Long)  //创建时间
    private Long created;

    @Field(type = FieldType.Keyword) //地理描述
    private String address;

    @Field(type = FieldType.Text,store = true,analyzer = "ik_smart")
    private String hobby;
}

@Document参数解析

在这里插入图片描述

@Field参数解析

在这里插入图片描述

创建索引

  public void CreatIndex(){
        boolean index = elasticsearchTemplate.createIndex(User.class);
        System.out.println(index);
    }

创建映射

public void CreatMapping(){
        boolean b = elasticsearchTemplate.putMapping(User.class);
        System.out.println(b);
    }

保存文档

public void saveDocuments(){
        User user = new User();
        user.setUserId((long) 1);
        user.setGeoPoint(new GeoPoint(10.100,15.1211));
        user.setCreated(System.currentTimeMillis());
        user.setAddress("北京");
        user.setHobby("足球篮球乒乓球");
        IndexQuery indexQuery =new IndexQueryBuilder().withObject(user).build();
        String index = elasticsearchTemplate.index(indexQuery);
        System.out.println(index);
    }

修改文档

public void updateDocuments(User user){
        UpdateRequest updateRequest = new UpdateRequest();
        updateRequest.doc(user);

        UpdateQuery build = new UpdateQueryBuilder().withId(String.valueOf(user.getUserId()))
                .withClass(User.class)
                .withUpdateRequest(updateRequest).build();

        UpdateResponse update = elasticsearchTemplate.update(build);
        System.out.println(update);

    }

分页查询

public void SelectPage(int size,int page){
        PageRequest of = PageRequest.of(page, size);

        NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
        nativeSearchQueryBuilder.withPageable(of);
        nativeSearchQueryBuilder.withQuery(null);

        AggregatedPage<User> users = elasticsearchTemplate.queryForPage(nativeSearchQueryBuilder.build(), User.class);
        for(User user:users.getContent()){
            System.out.println(user);
        }
    }

排序

public void SelectSort(){
        NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
        nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort("id").order(SortOrder.ASC));
        NativeSearchQuery build = nativeSearchQueryBuilder.build();

        List<User> users = elasticsearchTemplate.queryForList(build, User.class);
        for (User user:users){
            System.out.println(user);
        }
    }

查询语法

在这里插入图片描述

精确查询

在这里插入图片描述

根据id查询

在这里插入图片描述

GetQuery 根据id查询

在这里插入图片描述

模糊查询

在这里插入图片描述

范围查询

在这里插入图片描述

组合查询

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值