首页 > Java > java教程 > springboot中如何集成elasticsearch

springboot中如何集成elasticsearch

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2023-06-01 08:22:36
转载
1409 人浏览过

1,引入依赖

1

2

3

4

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>

</dependency>

登录后复制

2,编写实体映射类

1

2

3

4

5

6

7

8

9

@Data

@Document(indexName = "index", createIndex = true)

public class Index {

    @Id

    private String id;

 

    @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")

    private String content;

}

登录后复制

3,编写访问接口(如果需要自动创建索引,该接口必须写,否则项目启动时不会自动检测并创建索引)

1

2

3

4

@Repository

public interface IndexRepository extends ElasticsearchRepository<Index, String> {

    Page<Index> findByContent(String content, Pageable page);

}

登录后复制

4,测试,用了template,和repository两种方式测试

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

@SpringBootTest

public class EsTest {

    @Autowired

    ElasticsearchRestTemplate esTemplate;

    @Autowired

    IndexRepository indexRepository;

     

    @BeforeEach

    public void init() {

        System.out.println("init");

        indexRepository.deleteAll();

        indexRepository.saveAll(ListUtil.of(

        new Index("1","美国留给伊拉克的是个烂摊子吗"),

        new Index("2","公安部:各地校车将享最高路权"),

        new Index("3","中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"),

        new Index("4","中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"),

        new Index("5","中国天眼向全球正式开放下月世界大赛将比拼FAST脉冲星搜索")

        ));

    }

     

    @Test

    void testRepositoryQuery() {

        Page<Index> pageList = indexRepository.findByContent("中国", PageRequest.of(0, 10));

        pageList.getContent().forEach(e -> {

            System.out.println("repositoryQuery => "+e);

        });

    }

     

    @Test

    void testTemplateQuery() {

        BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()

                .must(QueryBuilders.simpleQueryStringQuery("中国").field("content"));

        NativeSearchQuery query = new NativeSearchQueryBuilder()

                .withQuery(queryBuilder)

                .withPageable(PageRequest.of(0, 10))

                .build();

        SearchHits<Index> search = esTemplate.search(query, Index.class);

        if(search.hasSearchHits()) {

            search.getSearchHits().forEach(e -> {

                System.out.println("templateQuery => "+e.getContent());

            });

        }

    }

}

登录后复制

1

2

3

4

5

6

7

8

init data

templateQuery => Index(id=3, content=中韩渔警冲突调查:韩警平均每天扣1艘中国渔船)

templateQuery => Index(id=4, content=中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首)

templateQuery => Index(id=5, content=中国天眼向全球正式开放下月世界大赛将比拼FAST脉冲星搜索)

init data

repositoryQuery => Index(id=3, content=中韩渔警冲突调查:韩警平均每天扣1艘中国渔船)

repositoryQuery => Index(id=4, content=中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首)

repositoryQuery => Index(id=5, content=中国天眼向全球正式开放下月世界大赛将比拼FAST脉冲星搜索)

登录后复制

5,可启动一个定时任务,定时ping,防止Connection time out

1

2

3

4

    @Scheduled(fixedRate = 15000)

    public void ping() {

        esTemplate.execute(client -> client.ping(RequestOptions.DEFAULT));

    }

登录后复制

以上是springboot中如何集成elasticsearch的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板