El uso básico de Spring Data Elasticsearch es realmente fragante.

El proyecto Spring Data Elasticsearch proporciona integración con el motor de búsqueda Elasticsearch. El área funcional clave de Spring Data Elasticsearch es un modelo centrado en POJO que se utiliza para interactuar con documentos de Elastichsearch y escribir fácilmente una capa de acceso a datos de estilo repositorio.
Introducción oficial: https://spring.io/projects/spring-data-elasticsearch

Uno, dependencia de Maven

		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-elasticsearch</artifactId>
			<version>4.0.4.RELEASE</version>
		</dependency>

En segundo lugar, aplicación.propiedades de colocación

spring.data.elasticsearch.cluster-name=my-elasticsearch
spring.data.elasticsearch.cluster-nodes=http://127.0.0.1:9300

Tres, clase de entidad

package com.example.entity;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;

@Data
@Document(indexName = "account", type = "_doc")
public class Message implements Serializable {
    
    
    private static final long serialVersionUID = 5710293639676035958L;
    @Id
    private String id;

    @Field(type = FieldType.Text, analyzer = "ik_max_word")
    private String username;

    @Field(type = FieldType.Text, analyzer = "ik_max_word")
    private String email;

    @Field(type = FieldType.Long)
    private String age;

    @Field(type = FieldType.Long) // 意思自定义属性格式 时间格式,我们在java程序中可以传入这些格式的时间
    private Long createTime;
}

、 、 Dao

Cinco operaciones CRUD básicas

Consulte las instrucciones oficiales: https://docs.spring.io/spring-data/elasticsearch/docs/4.0.4.RELEASE/reference/html/#elasticsearch.repositories

1. Consulta

Dao

package com.example.dao;

import com.example.entity.Message;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface MessageDao extends ElasticsearchRepository<Message, String> {
    
    
    Page<Message> findAll(Pageable pageable);

    Iterable<Message> findAll(Sort sort);

    List<Message> findByUsername(String username);

    List<Message> findByAgeBetween(Long mix, Long max);

    Long countByAgeBetween(Long mix, Long max);
}

Prueba

package com.example;

import com.example.dao.MessageDao;
import com.example.entity.Message;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;

import java.util.List;

@SpringBootTest
public class SpringDataElasticsearchFindTest {
    
    
    @Autowired
    private MessageDao messageDao;

    @Test
    public void findAll() {
    
    
        Iterable<Message> all = messageDao.findAll();
        all.forEach(System.out::println);
    }

    @Test
    public void findAllPageRequest() {
    
    
        Iterable<Message> all = messageDao.findAll(PageRequest.of(0, 1));
        all.forEach(System.out::println);
    }

    @Test
    public void findAllSort() {
    
    
        Iterable<Message> all = messageDao.findAll(Sort.by("age").descending());
        all.forEach(System.out::println);
    }

    @Test
    public void findByUsername() {
    
    
        List<Message> messages = messageDao.findByUsername("JonssonYan");
        messages.forEach(System.out::println);
    }

    @Test
    public void findByAgeBetween() {
    
    
        List<Message> messages = messageDao.findByAgeBetween(10L, 20L);
        messages.forEach(System.out::println);
    }

    @Test
    public void countByAgeBetween() {
    
    
        Long count = messageDao.countByAgeBetween(10L, 20L);
        System.out.println(count);
    }
}

2. Incrementar

package com.example;

import com.example.dao.MessageDao;
import com.example.entity.Message;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Date;

@SpringBootTest
public class SpringDataElasticsearchInsertTest {
    
    
    @Autowired
    private MessageDao messageDao;

    @Test
    public void insert() {
    
    
        Message message = new Message();
        message.setId("3");
        message.setAge("18");
        message.setEmail("[email protected]");
        message.setCreateTime(new Date().getTime());
        message.setUsername("JonssonYan");
        messageDao.save(message);
    }
}

Inserte la descripción de la imagen aquí

3. Modificar

La modificación es lo mismo que agregar, simplemente establezca la misma ID y los datos se reemplazarán automáticamente después de la ejecución

4. Eliminar

package com.example;

import com.example.dao.MessageDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class SpringDataElasticsearchDeleteTest {
    
    
    @Autowired
    private MessageDao messageDao;

    @Test
    public void deleteById(){
    
    
        messageDao.deleteById("2");
    }
}

Inserte la descripción de la imagen aquí

Seis, avanzado

1. Consulta JSON personalizada

Prueba

@Test
    public void findByUsername() {
    
    
        List<Message> messages = messageDao.findByUsername("JonssonYan");
        messages.forEach(System.out::println);
    }

Dao

package com.example.dao;

import com.example.entity.Message;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface MessageDao extends ElasticsearchRepository<Message, String> {
    
    
    @Query("{\"match\": {\"username\": {\"query\": \"?0\"}}}")
    List<Message> findByUsername(String username);
}

Supongo que te gusta

Origin blog.csdn.net/y1534414425/article/details/108989217
Recomendado
Clasificación