RESTFul 访问
索引 *** 作文档 *** 作查询 *** 作 Java API 访问
环境配置常用 API高级 *** 作 微信关注『方糖算法』
RESTFul 访问 索引 *** 作一切 *** 作遵从 RESTFul 风格。
1、创建索引
发送 PUT 请求:http://127.0.0.1:9200/索引名称
2、查看索引
指定:发送 GET 请求:http://127.0.0.1:9200/索引名称
全部:发送 GET 请求:http://127.0.0.1:9200/_cat/indices?v
3、删除索引
发送 DELETe 请求:http://127.0.0.1:9200/索引名称
文档 *** 作1、创建文档
随机ID:发送 POST 请求:http://127.0.0.1:9200/索引名称/_文档名称
指定ID:发送 POST 请求:http://127.0.0.1:9200/索引名称/_文档名称/ID
2、查看文档
指定:发送 GET 请求:http://127.0.0.1:9200/索引名称/_文档名称/ID
全部:发送 GET 请求:http://127.0.0.1:9200/索引名称/_search
3、修改文档
完全覆盖:发送 PUT 请求:http://127.0.0.1:9200/索引名称/_文档名称/ID
局部覆盖:发送 POST 请求:http://127.0.0.1:9200/索引名称/_update/ID
删除:发送 DELETE 请求:http://127.0.0.1:9200/索引名称/_文档名称/ID
条件查询 & 分页查询 & 排序查询
# 请求体 http://127.0.0.1:9200/索引名称/_search 字段值存入 Body 中查询 { "query":{ "match_all":{ } }, "from": 2, "size": 5, "_source": ["name"], "sort": { "age": { "order" : "desc", } } }
多条件查询 & 范围查询
# 请求体 http://127.0.0.1:9200/索引名称/_search 字段值存入 Body 中查询 { "query": { "bool": { "must" : [ { "match": { "age" : "21", } }, { "match": { "name" : "鲨鱼怪" } } ], "filter": { "range": { "age" : { "gt" : "20" } } } } } }
全文检索 & 完全匹配 & 高亮查询
# 请求体 http://127.0.0.1:9200/索引名称/_search # 全文检索,模糊查询 { "query": { "match": { "name": "飞" } } } # 完全匹配 { "query": { "match_phrase": { "name": "飞" } } } # 高亮查询 { "query": { "match": { "name": "小米" } }, "highlight": { "fields": { "age": {} } } }
聚合查询
# 请求体 http://127.0.0.1:9200/索引名称/_search # 分组查询 { "aggs": { // 聚合查询 "age_group": { // 统计结果名称 "terms": { // 分组 "field" : "age" // 分组字段 } } }, "size": 0 // 忽略原始数据 } 略Java API 访问 环境配置
常用 APIorg.elasticsearch elasticsearch7.10.1 org.elasticsearch.client elasticsearch-rest-high-level-client7.10.1 org.apache.logging.log4j log4j-api2.8.2 org.apache.logging.log4j log4j-core2.8.2 com.fasterxml.jackson.core jackson-databind2.9.9 junit junit4.12
代码类似,不必深究。
// 创建索引 CreateIndexRequest request = new CreateIndexRequest("role2"); client.indices().create(request, RequestOptions.DEFAULT); // 查询索引 GetIndexRequest request = new GetIndexRequest("role2"); client.indices().get(request, RequestOptions.DEFAULT); // 删除索引 DeleteIndexRequest request = new DeleteIndexRequest("role2"); AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT); // 文档插入 IndexRequest request = new IndexRequest(); request.index("user").id("1001"); User user = new User(); user.setName("张飞"); user.setSex("男"); user.setAge(20); String data = JSON.toJSONString(user); request.source(data, XContentType.JSON); client.index(request, RequestOptions.DEFAULT); // 文档更新 - 局部修改 UpdateRequest request = new UpdateRequest(); request.index("user").id("1001"); request.doc(XContentType.JSON,"sex","女"); client.update(request, RequestOptions.DEFAULT); // 文档查询 GetRequest request = new GetRequest(); request.index("user").id("1001"); GetResponse response = client.get(request, RequestOptions.DEFAULT); // 文档删除 DeleteRequest request = new DeleteRequest(); request.index("user").id("1001"); DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);高级 *** 作
1、批量插入 & 批量删除
// 文档批量插入 BulkRequest request = new BulkRequest(); request.add(new IndexRequest().index("user").id("1001").source(XContentType.JSON,"name","李四")); request.add(new IndexRequest().index("user").id("1002").source(XContentType.JSON,"name","王五")); request.add(new IndexRequest().index("user").id("1003").source(XContentType.JSON,"name","赵大妈")); request.add(new IndexRequest().index("user").id("1004").source(XContentType.JSON,"name","运费")); request.add(new IndexRequest().index("user").id("1005").source(XContentType.JSON,"name","题目")); BulkResponse response = client.bulk(request,RequestOptions.DEFAULT); // 文档批量删除 BulkRequest request = new BulkRequest(); request.add(new DeleteRequest().index("user").id("1001")); request.add(new DeleteRequest().index("user").id("1002")); request.add(new DeleteRequest().index("user").id("1003")); request.add(new DeleteRequest().index("user").id("1004")); request.add(new DeleteRequest().index("user").id("1005")); BulkResponse response = client.bulk(request,RequestOptions.DEFAULT);
2、全量查询
// 文档全查询 SearchRequest request = new SearchRequest(); request.indices("user"); request.source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery())); SearchResponse response = client.search(request, RequestOptions.DEFAULT); SearchHits hits = response.getHits();
3、分页查询 & 条件查询 & 字段查询
// 条件查询 SearchRequest request = new SearchRequest(); request.indices("user"); request.source(new SearchSourceBuilder().query(QueryBuilders.termQuery("age",30)))); SearchResponse response = client.search(request, RequestOptions.DEFAULT); SearchHits hits = response.getHits(); // 分页查询 (页码-1) * size SearchRequest request = new SearchRequest(); request.indices("user"); SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()); builder.from(4); builder.size(2); request.source(builder); SearchResponse response = client.search(request, RequestOptions.DEFAULT); SearchHits hits = response.getHits(); // 查询排序 SearchRequest request = new SearchRequest(); request.indices("user"); SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()); builder.sort("age", SortOrder.DESC); request.source(builder); SearchResponse response = client.search(request, RequestOptions.DEFAULT); SearchHits hits = response.getHits(); // 字段查询 SearchRequest request = new SearchRequest(); request.indices("user"); SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()); String[] excludes = {"age"}; String[] includes = {}; builder.fetchSource(includes,excludes); request.source(builder); SearchResponse response = client.search(request, RequestOptions.DEFAULT); SearchHits hits = response.getHits();
4、组合查询 & 范围查询
// 组合查询 SearchRequest request = new SearchRequest(); request.indices("user"); SearchSourceBuilder builder = new SearchSourceBuilder(); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); boolQueryBuilder.should(QueryBuilders.matchQuery("age",30)); boolQueryBuilder.should(QueryBuilders.matchQuery("age",40)); builder.query(boolQueryBuilder); request.source(builder); SearchResponse response = client.search(request, RequestOptions.DEFAULT); SearchHits hits = response.getHits(); // 范围查询 SearchRequest request = new SearchRequest(); request.indices("user"); SearchSourceBuilder builder = new SearchSourceBuilder(); RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("age"); rangeQuery.gte(30); rangeQuery.lte(40); builder.query(rangeQuery); request.source(builder); SearchResponse response = client.search(request, RequestOptions.DEFAULT); SearchHits hits = response.getHits();
5、模糊查询 & 高亮查询
// 模糊查询 SearchRequest request = new SearchRequest(); request.indices("user"); SearchSourceBuilder builder = new SearchSourceBuilder(); builder.query(QueryBuilders.fuzzyQuery("name", "肖").fuzziness(Fuzziness.ONE)); request.source(builder); SearchResponse response = client.search(request, RequestOptions.DEFAULT); SearchHits hits = response.getHits(); // 高亮查询 SearchRequest request = new SearchRequest(); request.indices("user"); SearchSourceBuilder builder = new SearchSourceBuilder(); TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("age", 30); HighlightBuilder highlightBuilder = new HighlightBuilder(); highlightBuilder.preTags(""); highlightBuilder.postTags(""); highlightBuilder.field("name"); builder.highlighter(highlightBuilder); builder.query(termQueryBuilder); request.source(builder); SearchResponse response = client.search(request, RequestOptions.DEFAULT); SearchHits hits = response.getHits();微信关注『方糖算法』
各类面试资料、内推资源,关注微信公众号获取哦。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)