您当前的位置: 首页 >  ar

cuiyaonan2000

暂无认证

  • 0浏览

    0关注

    248博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Elasticsearch On Springboot

cuiyaonan2000 发布时间:2021-09-07 13:50:55 ,浏览量:0

序言

目前了解到java整合Elasticsearch有3中方式cuiyaonan2000@163.com

  1. 使用Elasticsearch提供的9300端口的TCP协议进行交互---将在es8.X被取消
  2. 使用Elasticsearch提供的9200端口的HTTP协议进行交互(其中又分为Java Low Level REST Client和Java Hight Level REST Client)
  3. 使用springboot封装的就JPA的形式进行交互.(这个是我们主要的整合方式,同理不支持事务)

另外就是pringboot整合elasticsearch需要注意版本,不同的版本可能有不同的问题:这个肯定是去Springboot的官网去找cuiyaonan2000@163.com

官方网址: Spring Data Elasticsearch - Reference Documentation

整合

这里使用的

  1. Elasticsearche:7.12.0
  2. springboot:2.5.0

pom


    
        demons
        cui.yao.nan
        0.0.1-SNAPSHOT
    
    4.0.0

    elasticsearch

    
        UTF-8
        UTF-8
        1.8
        2.7.3
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    ${java.version}
                    ${java.version}
                
            
        
    



    
        
            junit
            junit
            test
        

        
            javax.servlet
            javax.servlet-api
            provided
        

        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-data-elasticsearch
        

        
            org.projectlombok
            lombok
            true
        

    

domain
package cui.yao.nan.elasticsearch.domain;

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

@Data
@Document(indexName = "book")
public class Book {

    @Id
    private String id;

    @Field(name="name")
    private String name;

    @Field(name = "price")
    private Long price;

}
@Document
@Persistent
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Document {

    String indexName();//索引库的名称,个人建议以项目的名称命名

    @Deprecated
    String type() default "";//类型,7.x之后以废弃

    short shards() default 1;//默认分区数

    short replicas() default 1;//每个分区默认的备份数

    String refreshInterval() default "1s";//刷新间隔

    String indexStoreType() default "fs";//索引文件存储类型

    boolean createIndex() default true; //是否创建索引

    VersionType versionType() default VersionType.EXTERNAL; //版本
}

@Field
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Documented
@Inherited
public @interface Field {

    @AliasFor("name")
    String value() default ""; //属性别名

    @AliasFor("value")
    String name() default ""; //属性别名

    FieldType type() default FieldType.Auto; //属性类型,默认自动根据参数类型自动属性的类型

 	boolean index() default true; //默认情况下分词

    DateFormat format() default DateFormat.none; //时间格式化

    String pattern() default "";

    boolean store() default false; //默认情况下不存储原文

    String searchAnalyzer() default ""; //指定字段搜索时使用的分词器

    String indexAnalyzer() default "";//指定字段建立索引时指定的分词器

    String[] ignoreFields() default {};//忽略某些字段

    //以下是一些不常用的设置
    boolean includeInParent() default false;
    String[] copyTo() default {};
    int ignoreAbove() default -1;
    boolean coerce() default true;
    boolean docValues() default true;
    boolean ignoreMalformed() default false;
    IndexOptions indexOptions() default IndexOptions.none;
    boolean indexPhrases() default false;
    IndexPrefixes[] indexPrefixes() default {};
    boolean norms() default true;
    String nullValue() default "";
    int positionIncrementGap() default -1;
    Similarity similarity() default Similarity.Default;
    TermVector termVector() default TermVector.none;
    double scalingFactor() default 1;
    int maxShingleSize() default -1;
}

Service
package cui.yao.nan.elasticsearch.service;

import cui.yao.nan.elasticsearch.dao.ArticleRepository;
import cui.yao.nan.elasticsearch.dao.BookRepository;
import cui.yao.nan.elasticsearch.domain.Article;
import cui.yao.nan.elasticsearch.domain.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ArticleService {

    @Autowired
    private ArticleRepository articledao;

    @Autowired
    private BookRepository bookdao;

    public void add(){
        Article article = new Article();
        article.setDes("我是文章的没描述");
        article.setName("我是文章的名字");
        Book book = new Book();
        book.setPrice(12l);
        book.setName("我是书本的名字");
        articledao.save(article);
        bookdao.save(book);
    }

    public void search(){

        Iterable bookList = bookdao.findAll();

        Iterable articleList = articledao.findAll();

        System.out.println(bookList.toString()+" "+articleList.toString());

    }


}

Launch Class
package cui.yao.nan.elasticsearch;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyConfig {


    // 这里在war形式下就没什么用了
    public static void main(String[] args) {
    	SpringApplication.run(MyConfig.class, args);
    }
    

}

搜索结果

关注
打赏
1638267374
查看更多评论
立即登录/注册

微信扫码登录

0.0355s