elasticsearch,es常用操作笔记

1,查询index  

查询index的settings  :分片,分词器

GET  /{index}/_settings

查询index 字段定义

GET  /{index}/_mapping

查询settings和mapping

GET  /{index}

查询index信息,列如状态,数据大小,条数

GET /_cat/indices?v&index={index}

查询索引字段分词结果

GET /{index}/{type}/{id}/_termvectors?fields={field}

自定义查询

GET /{index}/_search

{

bool查询条件

}

通过id查询

GET /{index}/{type}/{id}

2,修改

修改单个字段

POST /{index}/{type}/{id}/_update
{
 "doc":{
   "fiedName":"fiedvalue"
 }
}

创建索引

PUT /{index}

{

setting和mapping

}

3,数据迁移

方式一,reindex,需要添加白名单

reindex.remote.whitelist: ["es-cn-09k1rgid9000g****.elasticsearch.aliyuncs.com:9200"]

POST _reindex?refresh&wait_for_completion=false
{
"conflicts": "proceed",
"source": {
"remote": {
"host": "http://ip:9200"
},
"index": "oldindex",
"type": "type",
"size": 10000
},
"dest": {
"index": "newindex",
"op_type": "index"
}
}

查询迁移进度

GET /_tasks/{taskId}

PUT /my_index_v1/_alias/my_index //给索引添加别名

DElETE /my_index_v1/_alias/my_index //删除别名

方式二, elasticsearch-dump,不需要添加白名单,但是需要安装elasticsearch-dump,此处用docker

docker run --rm -ti elasticdump/elasticsearch-dump --input=http://ip1:9200/index1 --output=http://ip2:9200/index2 --type=settings

docker run --rm -ti elasticdump/elasticsearch-dump --input=http://ip1:9200/index1 --output=http://ip2:9200/index2 --type=mapping

docker run --rm -ti elasticdump/elasticsearch-dump --input=http://ip1:9200/index1 --output=http://ip2:9200/index2 --type=data

前两条导settings和mapping过去,第三条导数据过去,只要是安装了docker的机器并且有镜像的就可以跑,不用在elasticsearch本地跑

4,问题

es存储的字符串类型为默认的text和keyword类型

{
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          }

es默认分次器StandardAnalyzer,按符号,连接符,单词进行分词存储

列如:abc-d-1234  会被分词成   abc,d,1234三个词存储;而没有连接符的不会被分词,列如:abcd1234  则不分词  

导致的结果是:
普通term和terms查询: abc-d-1234匹配不到abc-d-1234 ,而abc,d,1234都能匹配到abc-d-1234,
                   abcd1234能匹配到abcd1234,这也是很多场景原来没有出现问题的原因,后来有问题了,因为原来没有带”-“的数据
默认的text和keyword类型精确匹配,应在字段后加.keyword进行精确匹配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值