前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈谈最近ES运维中遇到的几个有意思的问题<二>

谈谈最近ES运维中遇到的几个有意思的问题<二>

原创
作者头像
南非骆驼说大数据
发布2021-01-31 22:17:29
1.3K0
发布2021-01-31 22:17:29
举报

一、Kibana 上无法正常Discovery 日志的问题

问题描述

客户同一个集群,同一个索引里的某些文档,用API能直接搜出来,但是在discovery上不能正常搜索,换另外一个id又能正常展示.

正常展示一
正常展示一
异常展示二
异常展示二
GET wemeet-client-event-2021.01.29/_search
{
  "query": {
    "match": {
      "_id": "frmnTXcBk6fZ1AMtfKEH"
    }
  }
}       //能正常返回

解决办法

1,通过对比该索引里的不同文档具体属性可知,能在discovery界面正常返回的带时间戳字段,而不能返回的文档并不具备时间戳字段“@timestamp”,因此,不具备该字段的文档就无法正常在kibana返回,但是API确是可以正常搜索。

问题产生背景:

客户该索引的数据来自2部分,1个是filebeat产生的带时间戳的,一个是客户自己用代码自己手动写入的忘记带时间戳字段。

二、Reindex 复制索引数据报错导致复制失败

问题描述:

客户将存量索引通过reindex的方式拷贝到新生产的索引上,ES 集群版本为:6.4.3

POST _reindex
{
"source": {
"index": "db_article_om_202011"
},
"dest": {
"index": "db_contentgram_test"
}
} 

报错信息如下:

failures": [
{
"index": "db_contentgram_test",
"type": "t_article_om",
"id": "10_20201110A0C9XJ_0",
"cause": {
"type": "mapper_parsing_exception",
"reason": "failed to parse",
"caused_by": {
"type": "illegal_state_exception",
"reason": "Mixing up field types: class org.elasticsearch.index.mapper.KeywordFieldMapper$KeywordFieldType != class org.elasticsearch.index.mapper.TextFieldMapper$TextFieldType on field title"
}
}

通过排查:

按照信息提示可知,初步判定是title字段类型不一致导致,于是我们检查目标索引的title字段,发现并没异常。因为修改字段类型,而后再reindex是比较常用的手段。

再排查,发现新旧两个索引的的type不一致。而6.4.3低版本是可以支持多type的。于是删掉新索引的type,重新reindex就没有报错了。

附上方法:

PUT /db_contentgram_test     //创建索引
{
    "settings": {
        "analysis": {
          "analyzer": {
            "ngram_analyzer": {
              "tokenizer": "ngram_tokenizer"
            }
          },
          "tokenizer": {
            "ngram_tokenizer": {
              "type": "ngram",
              "min_gram": 1,
              "max_gram": 2,
              "token_chars": [
                "letter",
                "digit"
              ]
            }
          }
        }
      }
PUT db_contentgram_test/_mapping/t_article_om     //创建mapping
{
    "_source": {
          "enabled":true
       },
     "_all":{
          "enabled":false
     },
     "properties": {
         "abstract": {
           "type": "text",
            "analyzer": "ngram_analyzer"
         },
         "account": {
           "type": "keyword"
         },
         "accountname": {
           "type": "keyword"
         },
         "addtime": {
           "type": "integer"
         },
         "articleid": {
           "type": "keyword"
         },
         "businessid": {
           "type": "integer"
         }
         .........

然后再执行reindex就不报错了。

当然,上面的问题,我们可以指定源索引的特定type进行复制迁移,这样就不必要求2个索引type一致了。参数如下:

POST _reindex?wait_for_completion=false
{
  "source": {
    "index": ["db_content_test"],
    "type": ["t_article"]                        //指定type
  },
  "dest": {
    "index": "db_contentgram_test1",
    "type":"t_article_om_server"                    //新索引type
}

以上,也能解决reindex报错的问题。

Reindex指定链接迁移 参考链接 :https://www.elastic.co/guide/en/elasticsearch/reference/6.4/docs-reindex.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Kibana 上无法正常Discovery 日志的问题
  • 二、Reindex 复制索引数据报错导致复制失败
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档