
com.centit.search.service.IndexerSearcherFactory Maven / Gradle / Ivy
package com.centit.search.service;
import com.centit.search.service.Impl.ESIndexer;
import com.centit.search.service.Impl.ESSearcher;
import com.centit.support.algorithm.NumberBaseOpt;
import com.centit.support.file.PropertiesReader;
import org.apache.commons.lang3.StringUtils;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
/**
* Created by codefan on 17-6-22.
*/
@SuppressWarnings("unused")
public abstract class IndexerSearcherFactory {
private static ConcurrentHashMap indexerMap
= new ConcurrentHashMap<>();
private static ConcurrentHashMap searcherMap
= new ConcurrentHashMap<>();
/**
* 创建 索引客户端,或者 返回已经创建的 客户端
*
* @param config elastic search 服务器的配置信息
* @param objTypes 索引对象类型
* @return Indexer 索引器
*/
public static Indexer obtainIndexer(ESServerConfig config, Class> ... objTypes) {
Indexer index = indexerMap.get(config.getIndexName());
if(index!=null)
return index;
ESIndexer indexer = new ESIndexer(config);
if(indexer.createIndexIfNotExist()){
indexer.initMappingType(objTypes);
}
indexerMap.put(config.getIndexName(),indexer);
return indexer;
}
/**
* 创建 检索客户端,或者 返回已经创建的 客户端
*
* @param config elastic search 服务器的配置信息
* @param objTypes 索引对象类型
* @return Indexer 检索器
*/
public static Searcher obtainSearcher(ESServerConfig config, Class> ... objTypes) {
Searcher search = searcherMap.get(config.getIndexName());
if(search!=null)
return search;
ESSearcher searcher = new ESSearcher(config);
searcher.initTypeFields(objTypes);
searcher.setHightPreTags(new String[]{""});
searcher.setHightPostTags(new String[]{"
"});
searcherMap.put(config.getIndexName(),searcher);
return searcher;
}
/**
* 从 属性文件 中读取 elastic search 服务器的配置信息
* @param properties 属性文件
* @return elastic search 服务器的配置信息
*/
public static ESServerConfig loadESServerConfigFormProperties(Properties properties ){
ESServerConfig config = new ESServerConfig();
config.setServerHostIp(properties.getProperty("elasticsearch.server.ip"));
config.setServerHostPort(NumberBaseOpt.castObjectToInteger(
properties.getProperty("elasticsearch.server.port")));
config.setClusterName(properties.getProperty("elasticsearch.server.cluster"));
config.setIndexName(
StringUtils.lowerCase(properties.getProperty("elasticsearch.index")));
config.setOsId(properties.getProperty("elasticsearch.osId"));
config.setMinScore(NumberBaseOpt.parseFloat(
properties.getProperty("elasticsearch.filter.minScore"), 0.5f));
return config;
}
public static ESServerConfig loadESServerConfigFormProperties(String propertiesFile ){
Properties properties = PropertiesReader.getClassPathProperties(propertiesFile);
return loadESServerConfigFormProperties(properties);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy