ElasticSearch 입문 - 검색 (자바 api)
package com.qlyd.searchhelper;
import java.util.Map;
import net.sf.json.JSONObject;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.text.Text;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.highlight.HighlightField;
import com.qlyd.business.newsinfo.po.NewsInfo;
import com.qlyd.common.QlydConstants;
import com.qlyd.utils.ESTools;
import com.qlyd.utils.JsonUtils;
/**
*
*
* @ :
* @ :ElasticSearchHandler
* @ : //
* @author:
* @ :2016 3 22 3:26:52
* @ :
* @ :
* @ :
* @version 1.0.0
*
*/
public class ElasticSearchHandler {
private Client client = ESTools.getClient();
public void searcher(String key, String indexId, String type) {
try {
// , productindex productindex
SearchRequestBuilder searchRequestBuilder = client
.prepareSearch(indexId);
// ,setTypes("productType1", "productType2","productType3");
//
searchRequestBuilder.setTypes(type);
// 1.SearchType.DFS_QUERY_THEN_FETCH = 2.SearchType.SCAN
// = ,
searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
//
searchRequestBuilder
.setQuery(QueryBuilders.termQuery("title", key));
// // 4000-5000
// [4000,5000] , 4000 5000
// searchRequestBuilder.setFilter(FilterBuilders.rangeFilter("price")
// .from(4000).to(5000));
//
// //
// searchRequestBuilder.setFrom(0).setSize(3);
//
searchRequestBuilder.setExplain(true);
//
searchRequestBuilder.addHighlightedField("title");
searchRequestBuilder
.setHighlighterPreTags("");
searchRequestBuilder.setHighlighterPostTags("");
// ,
SearchResponse response = searchRequestBuilder.execute()
.actionGet();
// System.out.println(response.toString());
//
SearchHits searchHits = response.getHits();
SearchHit[] hits = searchHits.getHits();
// ObjectMapper mapper = new ObjectMapper();
for (int i = 0; i < hits.length; i++) {
SearchHit hit = hits[i];
// json
String json = hit.getSourceAsString();
// json
// Product product = mapper.readValue(json, Product.class);
NewsInfo newsInfo = JsonUtils
.readToObject(json, NewsInfo.class);
//
Map result = hit.highlightFields();
//
HighlightField titleField = result.get("title");
//
Text[] titleTexts = titleField.fragments();
System.out.println(titleTexts.toString());
// title
String title = "";
for (Text text : titleTexts) {
title += text;
}
//
newsInfo.setTitle(title);
//
System.out.println(newsInfo);
}
System.out.println("search success ..");
} catch (Exception e) {
// TODO: handle exception
}
}
public static void main(String[] args) {
ElasticSearchHandler esHandler = new ElasticSearchHandler();
System.out.println("++++++ +++++++");
esHandler.searcher(" ", QlydConstants.INDEX, QlydConstants.TYPE);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.