ElasticSearch 시작 Bulk, Serach 작업
3012 단어 검색 엔진
대량 색인 및 삭제
BulkRequestBuilder bulkRequest = client.prepareBulk();
for(int i=500;i<1000;i++){
//
String json = ESUtils.toJson(new LogModel());
IndexRequestBuilder indexRequest = client.prepareIndex("twitter", "tweet")
// ID
.setSource(json).setId(String.valueOf(i));
// builder
bulkRequest.add(indexRequest);
}
BulkResponse bulkResponse = bulkRequest.execute().actionGet();
if (bulkResponse.hasFailures()) {
// process failures by iterating through each bulk response item
System.out.println(bulkResponse.buildFailureMessage());
}
위쪽은 대량 인덱스 방법일 뿐,
client.prepareIndex에서
client.prepare Delete는 대량 삭제 작업입니다.ES는 대량 작업에 최적화를 하였기 때문에 모두가 사용할 때 가능한 한 조작을 집중하여 대량 인터페이스를 호출하면 속도가 좀 더 빨라질 것이다.
검색(Search)
여기서 말하는 검색은 단순히 동일한 조건의 검색일 뿐 진정한 의미의 검색과는 관련이 없다.예를 들어 우리는 첫 1000개의 기록을 검색하려고 하는데 코드는 다음과 같다.
SearchResponse response = client.prepareSearch("twitter")
// prepareSearch , setTypes
.setTypes("tweet")
// ,
.setFilter(FilterBuilders.matchAllFilter())
.setFrom(0).setSize(1000)
.execute()
.actionGet();
/**
* SearchHits SearchHit ,
*/
SearchHits shs = response.getHits();
for(SearchHit hit : shs){
System.out.println("id:"+hit.getId()+":"+hit.getSourceAsString());
}
client.close();
검색에는 두 가지 방법이 있는데 하나는 Filter를 사용하고 하나는 Query를 사용하여 검색하는 것이다. 예를 들어 특정한 필드가 구체적인 값인 데이터만 검색하고 싶으면 이렇게 쓸 수도 있다.
lient client = ESUtils.getClient();
/**
* ,QueryBuilders Hibernate Restrictions,
* QueryBuilder Criteria,
*/
BoolQueryBuilder query = QueryBuilders.boolQuery();
//systemName ,oa
query.must(QueryBuilders.termQuery("systemName", "oa"));
SearchResponse response = client.prepareSearch("twitter")
// prepareSearch , setTypes
.setTypes("tweet")
// ,
.setQuery(query)
.setFrom(0).setSize(60)
.execute()
.actionGet();
/**
* SearchHits SearchHit ,
*/
SearchHits shs = response.getHits();
for(SearchHit hit : shs){
System.out.println(hit.getSourceAsString());
}
client.close();
이것들은 단지 ES를 사용하는 전통적인 용법일 뿐, 바로 ES로 전통적인 데이터베이스를 대체하려는 용법이다.그러나 사실 ES의 주요 목적은 그렇지 않다. 검색엔진을 사용하는 것도 이런 간단한 검색과 삽입을 하려는 것이 아니라고 믿는다.순위, 분사 등 더 높은 용법은 저도 완전히 알지 못했으니 많은 가르침을 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
elasticsearchnested 삽입 대상 전체 텍스트 검색 및 정렬
ES Nested 중첩 유형은 무엇입니까?Elasticsearch에는 다음과 같은 다양한 데이터 유형이 있습니다.
기본 데이터 형식:string 형식.ES 7.x에서string 형식은:text와 키워드로 업그레이드됩...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
SearchResponse response = client.prepareSearch("twitter")
// prepareSearch , setTypes
.setTypes("tweet")
// ,
.setFilter(FilterBuilders.matchAllFilter())
.setFrom(0).setSize(1000)
.execute()
.actionGet();
/**
* SearchHits SearchHit ,
*/
SearchHits shs = response.getHits();
for(SearchHit hit : shs){
System.out.println("id:"+hit.getId()+":"+hit.getSourceAsString());
}
client.close();
lient client = ESUtils.getClient();
/**
* ,QueryBuilders Hibernate Restrictions,
* QueryBuilder Criteria,
*/
BoolQueryBuilder query = QueryBuilders.boolQuery();
//systemName ,oa
query.must(QueryBuilders.termQuery("systemName", "oa"));
SearchResponse response = client.prepareSearch("twitter")
// prepareSearch , setTypes
.setTypes("tweet")
// ,
.setQuery(query)
.setFrom(0).setSize(60)
.execute()
.actionGet();
/**
* SearchHits SearchHit ,
*/
SearchHits shs = response.getHits();
for(SearchHit hit : shs){
System.out.println(hit.getSourceAsString());
}
client.close();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
elasticsearchnested 삽입 대상 전체 텍스트 검색 및 정렬ES Nested 중첩 유형은 무엇입니까?Elasticsearch에는 다음과 같은 다양한 데이터 유형이 있습니다. 기본 데이터 형식:string 형식.ES 7.x에서string 형식은:text와 키워드로 업그레이드됩...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.