springboot+elasticsearch

springboot项目建立

建立一个常规的springboot项目,增加如下依赖与配置:

  1. pom.xml
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
        
  1. application.properties
spring.elasticsearch.rest.uris=*.0.0.0:9200
spring.data.elasticsearch.cluster-name=elasticsearch
spring.data.elasticsearch.cluster-nodes=*.0.0.0:9300
spring.data.elasticsearch.repositories.enabled=true

其中,spring.elasticsearch.rest.uris配置项不需要加中括号!!!

集成Spring Data Elasticsearch

定义实体类

使用repository作为es的操作方式,首先根据数据结构,与es中index、type名称定义实体类:

@Data
@Document(indexName = "testindex",type = "estest")
public class esTest {

    @Id
    @Field(type = FieldType.Integer)
    private Integer id;

    @Field(type = FieldType.Integer)
    private Integer num;

    @Field(type = FieldType.text)
    private String name;

    @Field(type = FieldType.text)
    private String number;

    @Field(type = FieldType.Keyword)
    private String content;

}

定义repository

@Repository
public interface TestRepository extends ElasticsearchRepository<esTest,Integer> {
    
}

ElasticsearchRepository已经实现了简单的增删改查方法,包括单条存储、多条存储、查询全部、删除等:

/*
添加单条数据
*/
esTest es = new esTest();
es.setId(1);
es.setContent("content1");
es.setNum(5);
es.setName("name1");
es.setNumber("number1");
testRepository.save(es);

/*
删除全部数据
*/
testRepository.deleteAll();


/*
查询全部数据
*/
Iterable<esTest> listResult = testRepository.findAll();

条件检索

使用NativeSearchQueryBuilder建立自定义的查询,需要分别定义其:

  • 检索条件(Query)
  • 分页(Pageable)
  • 排序(Sort)
  • 过滤(Filter)
	List<esTest> list = query(content);

    public List<esTest> query(String content){
        //定义检索方式与内容
        MatchQueryBuilder builder  = QueryBuilders.matchQuery("content",content);
        //定义排序
        FieldSortBuilder sort = SortBuilders.fieldSort("num").order(SortOrder.DESC);
        //NativeSearchQueryBuilder建立
        NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
        //定义检索
        nativeSearchQueryBuilder.withQuery(builder);
        //分页
        nativeSearchQueryBuilder.withPageable(new PageRequest(0, 10));
        //排序
        nativeSearchQueryBuilder.withSort(sort);
        SearchQuery query = nativeSearchQueryBuilder.build();
        //得到分页后结果
        Page<esTest> page = testRepository.search(query);
        List<esTest> list = page.getContent();
        return list;
    }

  1. 部分检索条件对数据类型有要求,例如分词检索要求类型为TEXT
  2. QueryBuilders相关检索方式可参考:https://blog.csdn.net/yuhui123999/article/details/105202140
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值