一、创建索引
curl -XDELETE x.x.x.177:9200/$index
curl -XPOST x.x.x.x.177:9200/$index -d '{
"mappings": {
"user_baseinfo": {
"properties": {
"Experience": {
"type": "long"
},
"NickName": {
"store": true,
"analyzer": "ik",
"type": "string",
"fields": {
"raw": {
"index": "not_analyzed",
"store": true,
"type": "string"
}
}
},
"UserID": {
"type": "long"
},
"UserIDExt": {
"store": true,
"type": "long"
}
},
"_all": {
"enabled": true,
"analyzer": "ik"
}
}
}
}'
二、全库插入更新
Settings settings = Settings.settingsBuilder().put("cluster.name", ES_Server_Cluster_Name).build();
Client client = null;
try {
TransportClient transportClient = TransportClient.builder().settings(settings).build();
String[] ipArr = ES_Server_IPs.split(","); for(String ipItemStr : ipArr) {
String[] ipItem = ipItemStr.split(":");
transportClient = transportClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ipItem[0]), Integer.parseInt(ipItem[1])));
}
client = transportClient;
} catch (UnknownHostException e) {
_log.error(e, e.getMessage());
}
if(client == null){
ret = -1;
return ret;
}
BulkRequestBuilder bulkRequest = client.prepareBulk();
int count = 0;
while(rs.next()){
long userID = rs.getLong("UserID");
long userIDExt = rs.getLong("UserIDExt");
String nickName = rs.getString("NickName");
long experience = rs.getLong("Experience");
UserSearchDomain domain = new UserSearchDomain();
domain.setUserID(userID);
domain.setUserIDExt(userIDExt);
domain.setNickName(nickName);
domain.setExperience(experience);
bulkRequest.add(client.prepareIndex(UserSearch_Index, UserSearch_Type, domain.getUserID().toString()).setSource(domain.toJSONStr())
);
BulkResponse bulkResponse = bulkRequest.execute().actionGet();
......
三、增量
Settings settings = Settings.settingsBuilder().put("cluster.name", ES_Server_Cluster_Name).build();
TransportClient transportClient = TransportClient.builder().settings(settings).build();
String[] ipArr = ES_Server_IPs.split(",");
for(String ipItemStr : ipArr) {
String[] ipItem = ipItemStr.split(":");
transportClient = transportClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ipItem[0]), Integer.parseInt(ipItem[1])));
}
Client client = transportClient;
IndexResponse response_add = client.prepareIndex(UserSearch_Index, UserSearch_Type, domain.getUserID().toString()).setSource(domain.toJSONStr()).get();
client.close();
四、查找
Settings settings = Settings.settingsBuilder().put("cluster.name", ES_Server_Cluster_Name).build();
TransportClient transportClient = TransportClient.builder().settings(settings).build();
String[] ipArr = ES_Server_IPs.split(",");
for(String ipItemStr : ipArr) {
String[] ipItem = ipItemStr.split(":");
transportClient = transportClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ipItem[0]), Integer.parseInt(ipItem[1])));
}
Client client = transportClient; //查询
QueryBuilder queryBuilder = null;
Pattern pattern = Pattern.compile("[0-9]*");
if(pattern.matcher(keyword).matches()){
queryBuilder = QueryBuilders.boolQuery().should(QueryBuilders.wildcardQuery("NickName.raw", "*" + keyword + "*"))
.should(QueryBuilders.termQuery("NickName.raw", keyword).boost(2f))
.should(QueryBuilders.termQuery("UserIDExt", keyword).boost(5f));
}else{
queryBuilder = QueryBuilders.boolQuery().should(QueryBuilders.wildcardQuery("NickName.raw", "*" + keyword + "*"))
.should(QueryBuilders.termQuery("NickName.raw", keyword).boost(2f));
}
SearchResponse response = client.prepareSearch(UserSearch_Index)
.setTypes(UserSearch_Type)
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(queryBuilder)
.addSort("_score", SortOrder.DESC)
.addSort("Experience", SortOrder.DESC)
.setFrom(from).setSize(size).setExplain(true)
.execute()
.actionGet();
List> users = new ArrayList<>();
SearchHit[] searchHists = response.getHits().getHits();
if(searchHists.length > 0){
for(SearchHit hit:searchHists){
String nickName = hit.getSource().get("NickName").toString();
Long userID = Long.valueOf(hit.getSource().get("UserID").toString());
Map map = new HashMap<>();
map.put("nickName", nickName);
map.put("userID", userID);
users.add(map);
}
}
client.close();
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30980622/viewspace-2125643/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30980622/viewspace-2125643/