• Java操作ElasticSearch


    maven引入

    <!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch -->
    <dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>6.2.3</version>
    </dependency>

    <dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
    <version>6.2.3</version>
    <exclusions>
    <exclusion>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    </exclusion>
    </exclusions>
    </dependency>

    1、创建索引

    @Override
    public DataWrapper<Void> createIndex(String index, String mapping) {//其中mapping对应下表格中非标红的的定义
    DataWrapper<Void> dw = new DataWrapper<Void>();
    try {
    client.admin().indices().prepareCreate(index).setSource(mapping, XContentType.JSON).execute().actionGet();
    } catch (Exception e) {
    log.error(e.getMessage(), e);
    dw.setCallStatus(CallStatusEnum.FAILED);
    dw.setMessage(e.getMessage());
    }
    return dw;
    }

    创建索引的mapping:

    put test
    {
    "mappings": {
    "test": {
    "properties": {
    "name": {
    "type": "keyword"
    },
    "question": {
    "type": "text",
    "analyzer": "ik"
    }
    }
    }
    },
    "settings": {
    "number_of_shards": "5",
    "analysis": {
    "analyzer": {
    "ik": {
    "type": "standard",
    "tokenizer": "ik_max_word"
    }
    }
    },
    "number_of_replicas": "1"
    }
    }

    2、删除索引

    @Override
    public DataWrapper<Void> deleteIndex(String index) {
    DataWrapper<Void> dw = new DataWrapper<Void>();
    try {
    client.admin().indices().prepareDelete(index).execute().actionGet();
    } catch (Exception e) {
    log.error(e.getMessage(), e);
    dw.setCallStatus(CallStatusEnum.FAILED);
    dw.setMessage(e.getMessage());
    }
    return dw;
    }

    3、修改索引

    ①添加字段

    @Override
    public DataWrapper<Void> updateIndex(String index, String type, String mapping) {//其中mapping对应下表格中非标红的的定义
    DataWrapper<Void> dw = new DataWrapper<Void>();
    try {
    client.admin().indices().preparePutMapping(index).setType(type).setSource(mapping, XContentType.JSON).execute().actionGet();
    } catch (Exception e) {
    log.error(e.getMessage(), e);
    dw.setCallStatus(CallStatusEnum.FAILED);
    dw.setMessage(e.getMessage());
    }
    return dw;
    }

    put test/test/_mapping
    {
    "properties": {
    "code": {
    "type": "keyword"
    }
    }
    }

    ②修改索引配置

    @SuppressWarnings("unused")
    @Override
    public DataWrapper<Void> updateSetting(String index, String type, String mapping) {//其中mapping对应下表格中非标红的的定义
    DataWrapper<Void> dw = new DataWrapper<Void>();
    try {
    UpdateSettingsRequest request = new UpdateSettingsRequest(index);
    request.settings(mapping, XContentType.JSON);

    boolean acknowledged = client.admin().indices().updateSettings(request).actionGet().isAcknowledged();
    } catch (Exception e) {
    log.error(e.getMessage(), e);
    dw.setCallStatus(CallStatusEnum.FAILED);
    dw.setMessage(e.getMessage());
    }
    return dw;
    }

    PUT test/_settings
    {
    "index":{
    "max_result_window":50000
    }
    }

  • 相关阅读:
    js判断手机或Pc端登陆.并跳转到相应的页面
    短信接口的使用
    sql替换
    jQuery 双击事件(dblclick)
    attr 和 prop 的区别
    如何获得select被选中option的value和text
    微信公众号基本配置
    关闭当前界面
    oninput、onchange与onpropertychange事件的区别, 与input输入框实时检测
    thinkphp5 与 endroid 二维码生成
  • 原文地址:https://www.cnblogs.com/wangymd/p/11139856.html
Copyright © 2020-2023  润新知