Elastic-postman简单增删改查

一、基本操作目录

1、查看当前所有索引

# 所有索引
GET http://localhost:9200/_cat/indices?v

# 查看s开头的索引
GET http://localhost:9200/_cat/indices/s*?v

2、查看当前所有索引别名

GET http://127.0.0.1:9200/_alias

3、配置账户密码访问

GET https://username:password@127.0.0.1:9200/

4、查询索引(别名)下的数据

GET http://127.0.0.1:9200/employee/_search
{
    "query" : {
        "match" : {
            "last_name" : "Smith"
        }
    }
}

只展示部分字段查找

GET student/_search
{
  "query": {
    "match": {
      "age": "12"
    }
  },
  "_source": {
    "includes": [
      "name"
    ]
  }
}

5、部分更新一个文档

POST /website/blog/1/_update
{
   "doc" : {
      "tags" : [ "testing" ],
      "views": 0
   }
}

脚本更新(https://www.elastic.co/guide/en/elasticsearch/reference/5.6/modules-scripting.html)

POST /website/blog/1/_update
{
   "script" : "ctx._source.tags+=new_tag",
   "params" : {
      "new_tag" : "search"
   }
}

6、删除一整个索引

DELETE https://admin:123456@127.0.0.1:9200/test_2022-05-13

RESTClient

# 脚本更新
request.setScript(
    new Script(
        ScriptType.INLINE, "painless",
        "ctx._source.tags+=new_tag",
        Collections.emptyMap())); 

https://blog.csdn.net/wyaoyao93/article/details/112467431

package study.wyy.esclient.high.document;

import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.action.DocWriteResponse;
import org.elasticsearch.action.support.WriteRequest;
import org.elasticsearch.action.support.replication.ReplicationResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.common.document.DocumentField;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.get.GetResult;
import org.junit.Test;
import study.wyy.esclient.high.BaseTest;

import java.io.IOException;
import java.util.Map;

/**
 * @author wyaoyao
 * @description
 * @date 2021/1/11 14:52
 * 更新文档测试
 */
@Slf4j
public class UpdateDocumentTest extends BaseTest {

    /****
     * 同步执行
     */
    @Test
    public void testSync() throws IOException {
        // 1 构建请求 索引库 文档id
        UpdateRequest request = new UpdateRequest("books","1");
        // 2 配置参数
        // 2.1 设置路由
        //request.routing("hello");
        // 2.2 设置超时时间
        request.timeout(TimeValue.timeValueMinutes(2));
        // 2.3 设置刷新策略
        request.setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL);
        // 2.4 设置:如果更新的文档在更新时被另一个操作更改,则重试更新的次数
        request.retryOnConflict(3);
        // 2.5 启用源检查,默认是关闭 就是restAPI中的是是否返回Source字段
        request.fetchSource(true);
        // 设置include和exclude
                     String[] includes = new String[]{"title","language"};
        String[] exclude  = new String[]{"description"};
        request.fetchSource(includes,exclude);

        // 3 构建json文档: 前面已经介绍过了es支持三种方式:json字符串,Map,XContentBuilder
        XContentBuilder xContentBuilder = XContentFactory.jsonBuilder();
        xContentBuilder.startObject();
        xContentBuilder.field("language","python");
        xContentBuilder.field("title","改个题目试试");
        xContentBuilder.endObject();
        request= request.doc(xContentBuilder);

        // 4 执行
        UpdateResponse response = client.update(request, RequestOptions.DEFAULT);

        // 5 解析响应
        // 5.1 获取索引库和文档id
        String index = response.getIndex();
        String id = response.getId();
        log.info("索引库: {}; 文档id: {}",index,id);
        // 5.2 获取结果:枚举值
        DocWriteResponse.Result result = response.getResult();
        log.info("响应结果: {}",result);
        // 5.3 分片信息
        ReplicationResponse.ShardInfo shardInfo = response.getShardInfo();
        log.info("分片信息: {}",shardInfo);
        // 5.4 版本号
        long version = response.getVersion();
        log.info("版本号: {}",version);
        GetResult getResult = response.getGetResult();
        Map<String, Object> source = getResult.getSource();
        log.info("source: {}",source);
        Map<String, DocumentField> documentFields = getResult.getDocumentFields();
        log.info("documentFields: {}",documentFields);
        Map<String, DocumentField> metadataFields = getResult.getMetadataFields();
        log.info("metadataFields: {}",metadataFields);
        client.close();

    }
}

6、简单的批量操作

POST /_bulk
{ "delete": { "_index": "website", "_type": "blog", "_id": "123" }} 
{ "create": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "title":    "My first blog post" }
{ "index":  { "_index": "website", "_type": "blog" }}
{ "title":    "My second blog post" }
{ "update": { "_index": "website", "_type": "blog", "_id": "123", "_retry_on_conflict" : 3} }
{ "doc" : {"title" : "My updated blog post"} } 

7、批量添加文档

POST http://127.0.0.1:9200/blog/
{ "title": "My second blog entry", "text": "Still trying this out...", "date": "2014/01/01" }

8、删除一个文档

DELETE /website/blog/123

 

二、官方文档地址

表达式搜索 - https://www.elastic.co/guide/cn/elasticsearch/guide/current/_search_with_query_dsl.html

复杂的搜索 - https://www.elastic.co/guide/cn/elasticsearch/guide/current/_more_complicated_searches.html

文档部分更新 - https://www.elastic.co/guide/cn/elasticsearch/guide/current/partial-updates.html

深入搜索 - https://www.elastic.co/guide/cn/elasticsearch/guide/current/search-in-depth.html

代价较小的批量操作 - https://www.elastic.co/guide/cn/elasticsearch/guide/current/bulk.html

 

三、常用的语言的客户端

官方手册 - https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.1/index.html

民间简单入门手册 - https://www.letianbiji.com/elasticsearch/es7-java-RestClient.html

官方手册简单版 - https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.4/java-rest-high-supported-apis.html

四、docker安装Elastic 

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.7.0

 docker run -d --name=elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.7.0

# 如果有需要更改的配置进入容器中 
vi config/elasticsearch.yml
docker restart es

五、相关博客

索引别名的使用 - https://blog.csdn.net/qq330983778/article/details/102980861

Elastic查询语法详解 - https://www.knowledgedict.com/tutorial/elasticsearch-query.html

通过 _bulk 批量添加文档 - https://www.letianbiji.com/elasticsearch/es7-bulk-add-doc.html

查询只展示部分字段 - https://www.letianbiji.com/elasticsearch/es7-show-partial-fields.html

ES操作指引干货 - https://zhuanlan.zhihu.com/p/355515434

 

 六、优秀手册

乐天笔记 - Elastic7快速上手 - https://www.letianbiji.com/elasticsearch/es7-quick-start.html

K - https://www.knowledgedict.com/tutorial/elasticsearch-intro.html

 

 

 

posted @ 2022-05-11 14:44  许伟强  阅读(825)  评论(0)    收藏  举报