参考:
https://github.com/searchbox-io/Jest/tree/master/jest/src/test
https://www.elastic.co/guide/en/elasticsearch/reference/5.5/search-request-scroll.html
/**
* 〈一句话功能简述〉操作ES的Jest客户端<br>
* 〈功能详细描述〉
*
* @author wangzha
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
@Service
public class JestService<T> implements InitializingBean {
public static Logger logger = LoggerFactory.getLogger(JestService.class);
/**
* jest客户端,单例
*/
private static JestClient client = null;
@Value("${es.cluster}")
private String cluster;
/**
* es 读取超时时间
*/
private static final String ES_READ_TIMEOUT = "es.read.timeout";
/**
* es 连接超时时间
*/
private static final String ES_CONNECT_TIMEOUT = "es.connect.timeout";
/**
* 滚动ID key
*/
private static final String SCORLL_ID_KEY = "_scroll_id";
/**
* 命中集 key
*/
private static final String QUERY_HITS_KEY = "hits";
/**
* 数据源 key
*/
private static final String SOURCE_KEY = "_source";
/**
* 搜索上下文的时间,用来支持该批次
*/
private static final String SCROLL_ALIVE_TIME = "5m";
@Override
public void afterPropertiesSet() throws Exception {
init();
}
/**
* 客户端初始化
*/
public void init() {
logger.info("ESJestClient Init Start...");
synchronized (JestService.class) {
if (client != null)
return;
// String[] uriArr = cluster.split(Symbols.COMMA);
String[] uriArr = new String[]{
"http://10.37.2.142:9900",
"http://10.37.2.143:9900", "http://10.37.2.144:9900"};
if (uriArr.length > 0) {
Set<String> serverUris = new LinkedHashSet<String>();
for (int i = 0; i < uriArr.length; i++) {
if (StringUtils.isNotEmpty(uriArr[i]))
serverUris.add(uriArr[i]);
}
JestClientFactory factory = new JestClientFactory();
factory.setHttpClientConfig(new HttpClientConfig.Builder(serverUris)
// .connTimeout(S