版本以及需要引入的jar包
< ! -- elasticSearch high leve client-- >
< dependency>
< groupId> org. elasticsearch. client< / groupId>
< artifactId> elasticsearch- rest- high- level- client< / artifactId>
< version> 7.6 .2 < / version>
< / dependency>
< dependency>
< groupId> org. elasticsearch. client< / groupId>
< artifactId> elasticsearch- rest- client< / artifactId>
< version> 7.6 .2 < / version>
< / dependency>
< dependency>
< groupId> org. elasticsearch< / groupId>
< artifactId> elasticsearch< / artifactId>
< version> 7.6 .2 < / version>
< / dependency>
开始操作
import org. apache. http. HttpHost;
import org. elasticsearch. action. DocWriteResponse;
import org. elasticsearch. action. admin. indices. alias. get. GetAliasesRequest;
import org. elasticsearch. client. indices. GetMappingsRequest;
import org. elasticsearch. action. bulk. BulkItemResponse;
import org. elasticsearch. action. bulk. BulkRequest;
import org. elasticsearch. action. bulk. BulkResponse;
import org. elasticsearch. action. index. IndexRequest;
import org. elasticsearch. action. index. IndexResponse;
import org. elasticsearch. client. GetAliasesResponse;
import org. elasticsearch. client. RequestOptions;
import org. elasticsearch. client. RestClient;
import org. elasticsearch. client. RestHighLevelClient;
import org. elasticsearch. client. indices. CreateIndexRequest;
import org. elasticsearch. client. indices. GetIndexRequest;
import org. elasticsearch. client. indices. GetMappingsResponse;
import org. elasticsearch. cluster. metadata. AliasMetaData;
import org. elasticsearch. cluster. metadata. MappingMetaData;
import org. elasticsearch. common. settings. Settings;
import org. elasticsearch. common. xcontent. XContentBuilder;
import org. elasticsearch. common. xcontent. XContentFactory;
import java. io. IOException;
import java. util. *;
public class ElasticSearchDemo {
static final RestHighLevelClient restHighLevelClient =
new RestHighLevelClient (
RestClient. builder (
new HttpHost ( "ip" , 9200 )
)
) ;
public static void main ( String[ ] args) throws IOException {
if ( ifIndexExist ( ) ) {
intoIndexValue ( ) ;
} else {
createIndex ( ) ;
intoIndexValue ( ) ;
}
getAllIndex ( ) ;
getFileNames ( "es_test_index" ) ;
}
private static void highlightetrSearch ( ) throws IOException {
SearchRequest searchRequest = new SearchRequest ( "es_test_index" ) ;
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder ( ) ;
QueryStringQueryBuilder queryBuilder = new QueryStringQueryBuilder ( "打游戏" ) ;
queryBuilder. field ( "hobby" ) . field ( "name" ) ;
HighlightBuilder highlightBuilder = new HighlightBuilder ( ) ;
highlightBuilder. preTags ( "<span style=\"color:red\">" ) ;
highlightBuilder. postTags ( "</span>" ) ;
highlightBuilder. field ( "name" ) . field ( "hobby" ) ;
searchSourceBuilder. highlighter ( highlightBuilder) ;
searchSourceBuilder. query ( queryBuilder) ;
searchRequest. source ( searchSourceBuilder) ;
searchSourceBuilder. from ( 1 ) . size ( 10 ) ;
SearchResponse search = restHighLevelClient. search ( searchRequest, RequestOptions. DEFAULT) ;
SearchHits hits = search. getHits ( ) ;
SearchHit[ ] hits1 = hits. getHits ( ) ;
for ( SearchHit documentFields : hits1) {
System. out. println ( documentFields) ;
Map< String, HighlightField> highlightFields = documentFields. getHighlightFields ( ) ;
HighlightField hobby = highlightFields. get ( "hobby" ) ;
Text[ ] fragments = hobby. fragments ( ) ;
String hhhhh = "" ;
for ( Text fragment : fragments) {
hhhhh += fragment;
}
System. out. println ( "hhhhhh" + hhhhh) ;
}
}
private static void getAllIndex ( ) throws IOException {
List< String> indexlist = new ArrayList < > ( ) ;
GetAliasesRequest request = new GetAliasesRequest ( ) ;
GetAliasesResponse response = restHighLevelClient. indices ( ) . getAlias ( request, RequestOptions. DEFAULT) ;
Map< String, Set< AliasMetaData> > aliases = response. getAliases ( ) ;
Set< String> indices = aliases. keySet ( ) ;
for ( String index : indices) {
if ( index. endsWith ( "_index" ) ) {
indexlist. add ( index) ;
}
}
System. out. println ( "索引数组是: " + indexlist) ;
}
private static void getFileNames ( String indexName) throws IOException {
GetMappingsRequest mappingsRequest = new GetMappingsRequest ( ) ;
mappingsRequest. indices ( indexName) ;
GetMappingsResponse mapping = restHighLevelClient. indices ( ) . getMapping ( mappingsRequest, RequestOptions. DEFAULT) ;
Map< String, MappingMetaData> mappings = mapping. mappings ( ) ;
MappingMetaData es_test_index = mappings. get ( indexName) ;
Map< String, Object> sourceAsMap = es_test_index. getSourceAsMap ( ) ;
System. out. println ( sourceAsMap) ;
}
private static boolean ifIndexExist ( ) throws IOException {
GetIndexRequest getIndexRequest = new GetIndexRequest ( "es_test_index" ) ;
boolean exists = restHighLevelClient. indices ( ) . exists ( getIndexRequest, RequestOptions. DEFAULT) ;
return exists;
}
private static void intoIndexValue ( ) throws IOException {
BulkRequest bulkRequest = new BulkRequest ( ) ;
XContentBuilder xContentBuilder = XContentFactory. jsonBuilder ( ) ;
xContentBuilder. startObject ( ) ;
{
xContentBuilder. field ( "name" , "jack" ) ;
xContentBuilder. field ( "hobby" , "打游戏" ) ;
}
xContentBuilder. endObject ( ) ;
IndexRequest indexRequest = new IndexRequest ( "es_test_index" ) ;
indexRequest. source ( xContentBuilder) ;
bulkRequest. add ( indexRequest) ;
BulkResponse bulkResponse = restHighLevelClient. bulk ( bulkRequest, RequestOptions. DEFAULT) ;
for ( BulkItemResponse bulkItemResponse : bulkResponse) {
DocWriteResponse response = bulkItemResponse. getResponse ( ) ;
IndexResponse indexResponse = ( IndexResponse) response;
System. out. println ( "批量新增成功,{}" + indexResponse. toString ( ) ) ;
}
}
private static void createIndex ( ) throws IOException {
CreateIndexRequest createIndexRequest = new CreateIndexRequest ( "es_test_index" ) ;
createIndexRequest. settings ( Settings. builder ( )
. put ( "index.number_of_shards" , "2" )
. put ( "index.number_of_replicas" , "0" )
) ;
XContentBuilder xContentBuilder = XContentFactory. jsonBuilder ( ) ;
xContentBuilder. startObject ( ) ;
{
xContentBuilder. startObject ( "properties" ) ;
{
Map< String, String> typeMap = new HashMap < > ( ) ;
typeMap. put ( "type" , "text" ) ;
xContentBuilder. field ( "hobby" , typeMap) ;
xContentBuilder. field ( "name" , typeMap) ;
}
xContentBuilder. endObject ( ) ;
}
xContentBuilder. endObject ( ) ;
createIndexRequest. mapping ( xContentBuilder) ;
restHighLevelClient. indices ( ) . create ( createIndexRequest, RequestOptions. DEFAULT) ;
System. out. println ( "创建成功" ) ;
}
}