『玩转 Es 引擎』Elasticsearch 入门

『玩转 Es 引擎』Elasticsearch 入门,第1张

『玩转 Es 引擎』Elasticsearch 入门

文章目录

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 访问 环境配置

        
            org.elasticsearch
            elasticsearch
            7.10.1
        
        
        
            org.elasticsearch.client
            elasticsearch-rest-high-level-client
            7.10.1
        
        
        
            org.apache.logging.log4j
            log4j-api
            2.8.2
        
        
            org.apache.logging.log4j
            log4j-core
            2.8.2
        
        
            com.fasterxml.jackson.core
            jackson-databind
            2.9.9
        
        
        
            junit
            junit
            4.12
        
    
常用 API

代码类似,不必深究。

// 创建索引
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();
微信关注『方糖算法』

各类面试资料、内推资源,关注微信公众号获取哦。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5700310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存