Springboot integra elasticsearch para lograr una simple adición, eliminación y modificación

Premisa: en primer lugar, por supuesto, el entorno es configurado, puede consultar mi blog anterior https://blog.csdn.net/weixin_39025362/article/details/105359306

1. Cree un proyecto springboot e introduzca la dependencia maven de es y lombok

<dependency>
   <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<!--lombok是创建实体类通过注解@Data为实体创建get、set、toString等方法,使我们的实体类非常简洁-->
 <dependency>
   <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

2. Crear es biblioteca de índices

1. La biblioteca de índice se puede crear a través del complemento cartero o head. El autor usa es6.2.4 La
siguiente introducción usa postman para crear la biblioteca de índice es, poner solicitud, url: http: // localhost: 9200 / test-search
como se describe en mysql , Es crear una base de datos llamada prueba-búsqueda, y luego una tabla de datos llamada artículo,
con tres campos, tipo largo de identificación, tipo de texto del título usando la búsqueda de palabras ik, tipo de texto de contenido, usando la búsqueda de palabras ik

{
  "settings": {
    "index.number_of_shards": 1,
    "index.number_of_replicas": 0,
    "index.refresh_interval": "-1"
  },
  "mappings": {
    "article": {
      "properties": {
        "id": {
          "type": "long",
          "index": false
        },
        "title": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        },
        "content": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word",
          "boost": 1.5
        }
      }
    }
  }
}

Inserte la descripción de la imagen aquí
Biblioteca de índice creada con éxito
Inserte la descripción de la imagen aquí

3. Regrese al proyecto springboot y comience a escribir código

1. Cree una clase de entidad llamada artículo

@Data
@Document(indexName = "test-search",type = "article",shards = 1,replicas = 0, refreshInterval = "-1")
public class Article implements Serializable {
    private Long id;

    private String title; //标题

    private String content;// 缩略内容
    
}

2.dao layer, crea una interfaz ArticleRepository, heredando ElasticsearchRepository

public interface ArticleRepository extends ElasticsearchRepository<Article,Long> {
    /**
     * 使用jpa的一个好处就是你想联合title和content去搜索,它就会有方法出现,使用pageable分页
     * @param title
     * @param content
     * @param pageable
     * @return
     */
    Page<Article> findByTitleLikeOrContentLike(String title, String content, Pageable pageable);

    /**
     * 根据article的content内容去搜索,使用pageable份额有
     * @param content
     * @param pageable
     * @return
     */
    Page<Article> findByContentLike(String content, Pageable pageable);
}

3.capa de servicio,

@Service
public class ArticleService {
    @Autowired
    private ArticleRepository articleRepository;

    public void save(Article article){
        articleRepository.save(article);
    }

    public Page<Article> search(String title, String content, Pageable pageable){
        return articleRepository.findByTitleLikeOrContentLike(title,content,pageable);
    }

    public Page<Article> search(String content,Pageable pageable){
        return articleRepository.findByContentLike(content,pageable);
    }
    public Page<Article> findAll(Pageable pageable){
        return articleRepository.findAll(pageable);
    }
}

4, controlador


@RestController
public class ArticleController {
    @Autowired
    private ArticleRepository articleRepository;

    @Autowired
    private ArticleService articleService;
	
	//可以插入单条也可以多条
    @RequestMapping("/articleSave")
    public String save(){
    List<Article> articles = new ArrayList<>();
    articles.add(new Article(System.currentTimeMillis(),"小米",
            "小米手机"));
    articles.add(new Article(System.currentTimeMillis(),"华为",
            "华为手机"));

    for(int i=0; i<articles.size(); i++){
        articleRepository.save(articles.get(i));
        System.out.println(articles.get(i));
    }
    return "success";
    }

    @RequestMapping("/search")
    public String search(HttpServletRequest request){
        int pageNum = 0;
        int pageSize = 10;
        String title = request.getParameter("title");
        String content = request.getParameter("content");
        Pageable pageable = PageRequest.of(pageNum,pageSize);
        Page<Article> articles = articleService.search(title,content,pageable);
        return articles.toString();
    }
}

Publicado 25 artículos originales · elogiado 4 · visitas 1516

Supongo que te gusta

Origin blog.csdn.net/weixin_39025362/article/details/105360676
Recomendado
Clasificación