• ElasticSearch常见命令


    ElasticSearch常见命令

    mapping

    ElasticSearch索引可以直接添加数据,但是默认情况下会将所有非数字的字段都做完文本(text)处理,如果要根据字段类型进行特别定制的话,需要用到ElasticSearchmapping功能去设置字段类型。

    setting

    ElasticSearch索引可以设置分词词库,如果没有设置的话,就会使用默认的词库进行匹配。默认的词库对中文支持不是很好,它会把汉字拆分成一个一个的单独的字去匹配。如果要设置自己的分词词库就要用到ElasticSearchsetting功能。

    alias

    ElasticSearch索引建立之后字段就不能增减了,要想修改只有新建一个新的索引一个方法,但是这会影响服务的正常使用,为了解决这个问题可以通过alias去快速地给新索引建立一个别名,因为建立别名的速度很快可以最大限度地规避服务中断的可能。

    routing

    ElasticSearch索引的数据的存储规则是平均写入到每一个分片里面,这样做的好处是如果一个分片出现故障不会导致索引数据完全丢失的严重事故。但是有些时候我们希望一类数据存储到一个分片里面,这样可以提高检索速度。这个时候就可以提高routing功能来强制数据存储到同一个分片上面。

    ElasticSearch索引和mapping导入导出

    1.脚本实现
    安装dump导入
    yum install epel-release -y
    yum install nodejs -y
    yum install npm -y
    npm install elasticdump
    npm install -g n
    sudo n v10
    ln -s `pwd`/node_modules/elasticdump/bin/elasticdump /usr/bin/elasticdump
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    导mapping(表结构)
    elasticdump --input=http://elasticsearch:9200/test   --output=./test.json   --type=mapping
    #导入test索引mapping
    elasticdump --input=./test.json   --output=http://elasticsearch:9200/test   --type=mapping
    
    #导出所有索引mapping (1)
    elasticdump --input=http://elasticsearch:9200/ --output=./all_mapping.json --all=true --type=mapping
    #导入所有索引mapping (2)
    elasticdump --input=./all_mapping.json --output=http://elasticsearch:9200/ --all=true --type=mapping
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    导出数据
    elasticdump  --input=http://elasticsearch:9200/test  --output=./test.json   --type=data
    #导入数据
    elasticdump  --input=./test.json  --output=http://elasticsearch:9200/test   --type=data
    
    #导出所有数据 (1)
    elasticdump --input=http://elasticsearch:9200/ --output=./all_data.json --all=true --type=data
    #导入所有数据 (2)
    elasticdump --input=./all_data.json --output=http://elasticsearch:9200/ --all=true --type=data
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    2.GET/PUT请求实现
    PUT导入
    创建索引

    导入mappingsetting只能在创建索引的时候设置,语法如下:

    PUT /rds
    
    {
      "settings": {
        "number_of_shards": 6,
        "number_of_replicas": 0
      },
      "mappings": {
        "rds": {
          "properties": {
            "rdsId": {
              "type": "long"
              },
            "rdsTitle": {
              "type": "text",
              "analyzer": "ik_smart",
              "search_analyzer": "ik_smart"
            }
          }
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    导入别名

    导入别名直接网根目录的别名里面导入即可,自己拼接JSON数据。

    POST /aliases
    
    {
      "actions": [
        {
          "add": {
            "index": "rds",
            "alias": "rds_1"
          }
        }
      ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    导入数据

    导入数据就是一行数据头信息,一行数据源信息。

    数据头

    {“_index”: “rds”, “_type”: “rds”, “_routing”: 77}

    数据源

    {“rdsId”: “10277”, “rdsTitle”: “ElasticSearch引擎”}

    GET导出
    mapping

    使用_mapping参数获得索引的mapping信息。

    ‘http://elasticsearch:9200/rds/_mapping?pretty=true’

    setting

    使用_setting参数获得索引的setting信息,红圈内容是系统自动生成的需要去掉。

    curl ‘http://elasticsearch:9200/rds/_settings?pretty=true’

    alias

    使用_alias参数获得索引的别名信息。

    curl ‘http://elasticsearch:9200/rds/_alias?pretty=true’

    routing

    每个索引都有可能设置routing信息,导出的时候除了_id_source之外,还需要带上_routing(如果有的话)。

  • 相关阅读:
    WIFI功耗计算器
    车用尿素交易暴增丨化工出口ERP让业务管理更高效
    21天打卡挑战 - 经典算法之快速排序
    谈谈数字化转型成功的10个启示
    【PyQt小知识 - 4】:QGroupBox分组框控件 - 边框和标题设置
    【Maui正式版】创建可跨平台的Maui程序,以及有关依赖注入、MVVM双向绑定的实现和演示...
    netty数据缓冲区之ChannelOutboundBuffer
    “绿色低碳+数字孪生“双轮驱动,解码油气管道站升级难点 | 图扑软件
    牛客练习赛115 A Mountain sequence
    javascript 大文件下载,分片下载,断点续传
  • 原文地址:https://blog.csdn.net/shang_xs/article/details/127746192