Elasticsearch Java Api
elasticsearch有很多Java Api提供使用
TransportClient
使用最原始的TransportClient来进行操作
1 2 3 4 5
| <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.4.0</version> </dependency>
|
创建TransportClient,后续操作都需要用到该对象
1 2 3
| TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getLocalHost(), 9300));
|
索引操作
创建索引管理客户端,后续索引管理都需要用到该对象
1
| IndicesAdminClient indices = client.admin().indices();
|
1 2 3
| IndicesExistsResponse existsResponse = indices.prepareExists("index2").get(); System.out.println(existsResponse.isExists());
|
1 2 3 4
| TypesExistsResponse typesExistsResponse = indices.prepareTypesExists("index2") .setTypes("default").get(); System.out.println(typesExistsResponse.isExists());
|
1 2 3 4 5 6
| CreateIndexResponse createIndexResponse = indices.prepareCreate("index3") .setSettings(Settings.builder().put("index.number_of_shards",3) .put("index.number_of_replicas",1)) .get(); System.out.println(createIndexResponse.isAcknowledged());
|
1 2 3 4 5
| UpdateSettingsResponse settingsResponse = indices.prepareUpdateSettings("index3") .setSettings(Settings.builder().put("index.number_of_replicas", 2)) .get(); System.out.println(settingsResponse.isAcknowledged());
|
1 2 3 4 5 6 7 8 9
| GetSettingsResponse getSettingsResponse = indices.prepareGetSettings("index3").get(); getSettingsResponse.getIndexToSettings().forEach( cursor -> { String index = cursor.key; Settings settings = cursor.value; Integer number_of_replicas = settings.getAsInt("index.number_of_replicas", null); } );
|
1 2 3 4 5 6
|
CreateIndexResponse createIndexAddMappingResponse = indices.prepareCreate("index4") .addMapping("default", XContentFactory.jsonBuilder().startObject().startObject("properties") .startObject("name").field("type", "keyword").endObject().endObject().endObject() ).get();
|
1 2 3 4 5 6
| GetMappingsResponse mappingsResponse = indices.prepareGetMappings("index4").get(); ImmutableOpenMap<String, MappingMetaData> index4Mappings = mappingsResponse.getMappings().get("index4");
MappingMetaData metaData = index4Mappings.get("default"); System.out.println(metaData.sourceAsMap());
|
1 2 3
| DeleteIndexResponse deleteIndexResponse = indices.prepareDelete("index4").get(); System.out.println(deleteIndexResponse.isAcknowledged());
|
文档操作
1 2 3 4 5 6 7
| Map<String,Object> doc = new HashMap<>(); doc.put("name","zhangsan"); doc.put("age",20); IndexResponse indexResponse = client.prepareIndex("index5", "default", "1") .setSource(doc).get(); System.out.println(indexResponse.status());
|
1 2 3
| GetResponse response = client.prepareGet("index5", "default", "1").get(); System.out.println(response.getSourceAsString());
|
1 2 3 4
| UpdateResponse updateResponse = client.prepareUpdate("index5", "default", "1") .setDoc(XContentFactory.jsonBuilder().startObject().field("age", 18) .endObject()).get();
|
1 2 3
| DeleteResponse deleteResponse = client.prepareDelete("index5", "default", "1").get(); System.out.println(deleteResponse.status());
|
1 2 3 4 5 6 7
| BulkByScrollResponse deleteByQuery = DeleteByQueryAction.INSTANCE.newRequestBuilder(client) .filter(QueryBuilders.matchQuery("age", 20)) .source("index5") .get();
System.out.println(deleteByQuery.getDeleted());
|
查询操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
MatchPhrasePrefixQueryBuilder matchPhrasePrefixQueryBuilder = QueryBuilders.matchPhrasePrefixQuery("name", "zhangs");
MatchPhraseQueryBuilder matchPhraseQueryBuilder = QueryBuilders.matchPhraseQuery("name", "zhangsan");
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "zhangsan");
WildcardQueryBuilder wildcardQueryBuilder = QueryBuilders.wildcardQuery("name", "zhang*");
FuzzyQueryBuilder fuzzyQueryBuilder = QueryBuilders.fuzzyQuery("name", "zhang");
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery() .must(QueryBuilders.matchQuery("name", "zhangsan")) .should(QueryBuilders.matchQuery("age", 20));
client.prepareSearch("index6") .setQuery(matchAllQueryBuilder) .setSize(10) .get();
|