Home > Java > javaTutorial > body text

How to integrate elasticsearch in springboot

WBOY
Release: 2023-06-01 08:22:36
forward
1228 people have browsed it

1, introduce dependencies

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
		</dependency>
Copy after login

2, write entity mapping class

@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;
}
Copy after login

3, write access interface (if you need to automatically create an index, this interface must be written, otherwise it will not work when the project starts Automatically detect and create indexes)

@Repository
public interface IndexRepository extends ElasticsearchRepository<Index, String> {
	Page<Index> findByContent(String content, Pageable page);
}
Copy after login

4, test, use template, and repository to test

@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());
			});
		}
	}
}
Copy after login
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脉冲星搜索)
Copy after login

5, you can start a scheduled task and ping regularly to prevent Connection time out

    @Scheduled(fixedRate = 15000)
	public void ping() {
		esTemplate.execute(client -> client.ping(RequestOptions.DEFAULT));
	}
Copy after login

The above is the detailed content of How to integrate elasticsearch in springboot. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template