package com.Elastic.srv;
import java.io.IOException;
import org.apache.lucene.queryparser.flexible.core.builders.QueryBuilder;
import org.apache.lucene.search.join.ScoreMode;
import org.apache.lucene.search.spans.SpanTermQuery;
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.MatchAllQueryBuilder;
import org.elasticsearch.index.query.MatchQueryBuilder;
import org.elasticsearch.index.query.NestedQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
public class MAIN {
static private String defaultIndex = "hex_color_list"; // index
static private RestHighLevelClient rhlc = null;
static public void main(String[] args) throws IOException {
System.out.println("test ... 중");
rhlc = ElasticSearchConnector.getClient();
//doMatchingQuery();
//defaultFullTextSearch();
//tstFunc();
getDocument();
System.out.println("test ... 끝");
}
static public void tstFunc() {
//GetIndexRequest request = new GetIndexRequest()
SearchRequest sr = new SearchRequest();
SearchSourceBuilder sb = new SearchSourceBuilder();
sb.query(QueryBuilders.nestedQuery
("obj1", QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("obj1.name", "john"))
.must(QueryBuilders.rangeQuery("obj1.age")
.from(5)
.to(31)
.includeLower(true)
.includeUpper(true)), ScoreMode.Avg));
sr.source(sb);
try {
SearchResponse response = rhlc.search(sr, RequestOptions.DEFAULT);
SearchHits searchHits = response.getHits();
for (SearchHit hit : searchHits) {
// totalHits
System.out.println(hit.getSourceAsString());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
static public void aliasSearch() {
IndicesAliasesRequest request = new IndicesAliasesRequest();
}
static public void doMatchingQuery() throws IOException {
// [1] create SearchRequest
SearchRequest sr = new SearchRequest();
SearchSourceBuilder sb = new SearchSourceBuilder();
//sb.query(QueryBuilders.matchQuery("name", "b84c4c"));
//SpanTermQuery("name", "b84c4c");
sr.indices(defaultIndex);
sr.source(sb);
SearchResponse response = rhlc.search(sr, RequestOptions.DEFAULT);
SearchHits searchHits = response.getHits();
//System.out.println(searchHits);
// 매칭 되는 갯수
long totalHits = searchHits.getTotalHits();
// 얼마만큼 매칭 되는지
double maxScore = searchHits.getMaxScore();
System.out.println(totalHits);
System.out.println(maxScore);
for (SearchHit hit : searchHits) {
// totalHits
System.out.println(hit.getSourceAsString());
}
}
static private void SpanTermQuery(String string, String string2) {
// TODO Auto-generated method stub
}
static public void getDocument() {
// index, type, id
GetRequest getRequest = new GetRequest("hex_color_list","doc","1");
try {
GetResponse getResponse = rhlc.get(getRequest, RequestOptions.DEFAULT);
String id = getResponse.getId();
String idx = getResponse.getIndex();
String type = getResponse.getType();
String sourceAsString = getResponse.getSourceAsString();
System.out.println("id : " + id + " index: " + idx + " type: " + type );
System.out.println (sourceAsString);
} catch (IOException e) {
System.out.println(e);
}
}
static public void defaultFullTextSearch() throws IOException {
HighlightField field = null;
// [1] create SearchRequest
SearchRequest sr = new SearchRequest();
SearchSourceBuilder sb = new SearchSourceBuilder();
sb.query(QueryBuilders.matchAllQuery());
sr.indices(defaultIndex);
sr.source(sb);
SearchResponse response = rhlc.search(sr, RequestOptions.DEFAULT);
SearchHit[] searchHits = response.getHits().getHits();
//System.out.println(searchHits);
for (SearchHit hit : searchHits) {
field = hit.getHighlightFields().get("name");
System.out.println(hit.getSourceAsString());
}
}
// indx response
static public void indxResponse() {
//IndexResponse response = rhlc.
}
}
'Java' 카테고리의 다른 글
java + beautifulsoup (0) | 2019.02.09 |
---|---|
java + mysql 연동 (0) | 2019.02.07 |
java yaml 파일 읽기 (0) | 2019.01.20 |
java_yaml (0) | 2018.12.16 |