實現基于Elasticsearch的搜索服務
大家好,我是微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿!
1. Elasticsearch簡介
Elasticsearch是一個開源的分布式搜索引擎,提供強大的全文搜索和分析功能。本文將詳細介紹如何在Java應用中集成和使用Elasticsearch來構建高效的搜索服務。
2. 環境準備與配置
在開始之前,確保已經安裝并配置好Elasticsearch服務,并且可以訪問其REST API。
3. Java集成Elasticsearch
3.1 添加Elasticsearch依賴
首先,在項目的pom.xml
文件中添加Elasticsearch的依賴:
<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.16.0</version>
</dependency>
3.2 編寫Elasticsearch客戶端配置
package cn.juwatech.elasticsearch;import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.RestClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.RestClients;
import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;@Configuration
public class ElasticsearchConfig extends AbstractElasticsearchConfiguration {@Override@Beanpublic RestHighLevelClient elasticsearchClient() {final ClientConfiguration clientConfiguration = ClientConfiguration.builder().connectedTo("localhost:9200").build();return RestClients.create(clientConfiguration).rest();}
}
3.3 創建Elasticsearch文檔實體
package cn.juwatech.elasticsearch;import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;@Document(indexName = "products")
public class Product {@Idprivate String id;private String name;private String description;private double price;// 省略構造方法和getter/setter
}
3.4 定義Elasticsearch數據訪問接口
package cn.juwatech.elasticsearch;import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;import java.util.List;public interface ProductRepository extends ElasticsearchRepository<Product, String> {List<Product> findByName(String name);List<Product> findByDescription(String description);List<Product> findByNameOrDescription(String name, String description);
}
4. 使用Elasticsearch進行搜索
4.1 添加數據到Elasticsearch索引
package cn.juwatech.elasticsearch;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class ProductService {@Autowiredprivate ProductRepository productRepository;public void saveProduct(Product product) {productRepository.save(product);}public Iterable<Product> findAllProducts() {return productRepository.findAll();}
}
4.2 執行搜索操作
package cn.juwatech.elasticsearch;import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class ProductSearchService {@Autowiredprivate ElasticsearchRestTemplate elasticsearchRestTemplate;public List<Product> searchProducts(String query) {SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.query(QueryBuilders.queryStringQuery(query));return elasticsearchRestTemplate.queryForList(sourceBuilder.build(), Product.class);}
}
5. 總結
本文介紹了如何利用Java語言集成Elasticsearch,實現基于Elasticsearch的高效搜索服務。從配置Elasticsearch客戶端、定義文檔實體、編寫數據訪問層到執行搜索操作,詳細展示了整個實現過程。
微賺淘客系統3.0小編出品,必屬精品,轉載請注明出處!