es(elasticsearch)통합 SpringCloud(SpringBoot)구축 튜 토리 얼 상세 설명
8537 단어 elasticsearch통합SpringCloud
1.우선 관련 파일 다운로드
2.그리고 시작 파일 을 시작 해 야 합 니 다.
3.관련 jar 패키지 가 져 오기(관련 의존 패키지 가 가 져 올 필요 가 없다 면)및 설정 파일 을 가 져 오고 dao 인터페이스 계승 클래스 를 작성 하여 시작 클래스 에 주 소 를 표시 합 니 다.
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
## ElasticSearch - start
# Elasticsearch ( :true)
spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.cluster-nodes=localhost:9300
spring.data.elasticsearch.cluster-name=myes
Shop:아래 에 생 성 된 실체 클래스 이름(잘못 쓸 수 없습니다)입 니 다.String(참조 할 때의 유형 입 니 다.제 가 여기 있 는 id 도 String 입 니 다.integer 가 잘못 보 고 했 기 때 문 입 니 다)
import com.jk.user.model.Shop;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
public interface EsDao extends ElasticsearchRepository<Shop,String> {
}
시작 클래스 에 주 해 를 붙 이 고 뒤에 따 르 는 것 은 dao 의 가방 이름 입 니 다.
@EnableElasticsearchRepositories(basePackages = "com.jk.web.dao")
4.실체 류indexName 은 데이터베이스 이름,type 은 표 이름 에 해당 하 며 id,type 형식,analyzer 분사 기 이름(ik 분사)을 추가 해 야 합 니 다.
@Document(indexName = "zth",type = "t_shangpin")
public class Shop implements Serializable {
private static final long serialVersionUID = 2006762641515872124L;
private String id;
@Field(type = FieldType.Text, analyzer = "ik_max_word")
//
private String shopname;
//
private Long reducedprice;
}
5.그 다음 에 controller 층(여기 dao 인터페이스 에 직접 주입)을 작성 합 니 다.여기 서 제 가 선택 한 것 은 대상 순환 할당 입 니 다.사실은 직접 집합 할 수 있 습 니 다(참고)
//elasticsearch
// @RequestMapping("el")
// @ResponseBody
// public void el(){
// List<ElasticsearchBean> list=shoppService.queryelasticsearch();
// for (ElasticsearchBean ss: list) {
// ss.setScrenicName(ss.getScrenicName()+""+ss.getHotelName());
// }
// elasticsearch.saveAll(list);
// }
@Autowired
private EsDao esDao;
//
@Autowired
private ElasticsearchTemplate elasticsearchTemplate ;
// es
@RequestMapping("addEs")
public boolean addShopEs() {
List<TShangpin> list = webUserService.queryShouye();//
Shop shop = new Shop();
try {
for (int i = 0; i < list.size(); i++) {
shop.setId(list.get(i).getShopid().toString());
shop.setShopname(list.get(i).getShopname());
esDao.save(shop);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
//es
@RequestMapping("queryShop")
public List ellist(String name, HttpSession session, Integer page, Integer rows){
if (name==null||"".equals(name)){
name = session.getAttribute("name").toString();
}
page=1;
rows=3;
HashMap<String, Object> resultMap = new HashMap<>();
//
SearchRequestBuilder searchRequestBuilder = elasticsearchTemplate.getClient().prepareSearch("zth").setTypes("t_shangpin");
//
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
if (name!=null && !"".equals(name)){
boolQueryBuilder.should(QueryBuilders.matchQuery("shopname",name));
}
//
searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
searchRequestBuilder.setQuery(boolQueryBuilder);
//
searchRequestBuilder.setFrom((page-1)*rows);
searchRequestBuilder.setSize(rows);
//
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.field("shopname")
.preTags("<font color='red'>")
.postTags("</font>");
searchRequestBuilder.highlighter(highlightBuilder);
// (json)
SearchResponse searchResponse = searchRequestBuilder.get();
SearchHits hits = searchResponse.getHits();
//
long totalHits = hits.getTotalHits();
resultMap.put("total",totalHits);
ArrayList<Map<String,Object>> list = new ArrayList<>();
// Hits json
SearchHit[] hits1 = hits.getHits();
for (int i=0;i<hits1.length;i++){
// Map
Map<String, Object> sourceAsMap = hits1[i].getSourceAsMap();
//
Map<String, HighlightField> highlightFields = hits1[i].getHighlightFields();
//!! sourceAsMap !!
if (name!=null && !"".equals(name)){
sourceAsMap.put("shopname",highlightFields.get("shopname").getFragments()[0].toString());
}
list.add(sourceAsMap);
}
return list;
}
6.마지막 으로 검색 할 수 없다 면 ik 의 json 파일 을 추가 해 야 할 수도 있 습 니 다.실체 류 에 ik 분사 기 라 고 규정 되 어 있 기 때문에 저장 하지 않 으 면 단어 가 없습니다.film-mapping.json
{
"film":
{
"_all":
{
"enabled": true
},
"properties":
{ "id":
{
"type": "integer"
},"name":
{
"type": "text", "analyzer": "ikSearchAnalyzer", "search_analyzer": "ikSearchAnalyzer", "fields":
{ "pinyin": {
"type": "text", "analyzer": "pinyinSimpleIndexAnalyzer", "search_analyzer": "pinyinSimpleIndexAnalyzer"
} } },
"nameOri": { "type": "text"
},"publishDate":
{ "type": "text" },"type":
{ "type": "text"
},"language":
{ "type": "text"
},"fileDuration":
{ "type": "text"
},"director":
{ "type": "text",
"index": "true", "analyzer": "ikSearchAnalyzer"
},"created":
{
"type": "date", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
} } } }
film-setting.json
{ "index": { "analysis":
{ "filter":
{ "edge_ngram_filter":
{ "type": "edge_ngram", "min_gram": 1, "max_gram": 50
},"pinyin_simple_filter":
{
"type": "pinyin", "first_letter": "prefix", "padding_char": " ", "limit_first_letter_length": 50, "lowercase": true
}
},"char_filter":
{
"tsconvert": { "type": "stconvert", "convert_type": "t2s"
}
},"analyzer":
{ "ikSearchAnalyzer":
{ "type": "custom", "tokenizer": "ik_max_word", "char_filter": [ "tsconvert" ]
},"pinyinSimpleIndexAnalyzer":
{ "tokenizer": "keyword", "filter": [ "pinyin_simple_filter", "edge_ngram_filter", "lowercase" ]
} } } } }
총결산
이 글 은 es(elasticsearch)통합 SpringCloud(SpringBoot)구축 튜 토리 얼 에 대한 상세 한 설명 을 소개 합 니 다.더 많은 elasticsearch 통합 SpringCloud 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많이 응원 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
App Search의 본문 파싱(저를 포함하여) 일부 사람들이 Swifttype 사이트 검색에서 놓친 기능은 CSS 선택기를 사용하여 콘텐츠를 구문 분석할 수 있다는 것입니다. App Search 크롤러는 지정한 웹사이트에서 모든 콘텐츠를 추출하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.