Elasticsearch Mapping字段未支持索引导致搜索失效

这篇具有很好参考价值的文章主要介绍了Elasticsearch Mapping字段未支持索引导致搜索失效。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述:

生产上Es根据一个时间字段搜索,却没有返回数据

问题分析:

根据命令:GET indexName/_mapping 查看


#GET indexName/ _mapping
{
	"indexName": {
		"mappings": {
			"properties": {
				"channel_source": {
					"type": "integer"
				},
				"content_id": {
					"type": "integer"
				},
				"count_name": {
					"type": "integer",
					**"index": false**
				},
				"count_type": {
					"type": "integer"
				},
				"insert_time": {
					"type": "date",
					"format": "yyyy-MM-dd HH:mm:ss"
				},
				"pv": {
					"type": "integer"
				}
			}
		}
	}
}

count_name设置了 “index”: false导致根据该字段搜索导致索引不生效。
ES的mappings定义好了生成索引后是不支持修改现有的字段的,只能新增属性。

解决方案

使用reindex命令处理

1、运行命令:GET indexName 拿到索引的mappingssettings

(不要遗漏了settings属性)

{
  "indexName" : {
    "aliases" : { },
    "mappings" : {
      "properties" : {
        "channel_source" : {
          "type" : "integer"
        },
        "content_id" : {
          "type" : "integer"
        },
        "count_name" : {
          "type" : "integer",
           "index" : false
        },
        "count_type" : {
          "type" : "integer"
        },
        "insert_time" : {
          "type" : "date",
          "format" : "yyyy-MM-dd HH:mm:ss"
        },
        "pv" : {
          "type" : "integer"
        }
      }
    },
    "settings" : {
      "index" : {
        "refresh_interval" : "1s",
        "number_of_shards" : "3",
        "translog" : {
          "flush_threshold_size" : "1024m",
          "sync_interval" : "120s",
          "durability" : "async"
        },
        "provided_name" : "indexName",
        "max_result_window" : "10000",
        "creation_date" : "1648546177107",
        "number_of_replicas" : "3",
        "uuid" : "SkIOphVHQhq9hLbkxrQgwQ",
        "version" : {
          "created" : "7010099"
        }
      }
    }
  }
}
2、根据PUT命令创建indexName_new

注意需要去除对应字段下的(“index” : false)

PUT indexName_new
{
  
    
    "mappings" : {
      "properties" : {
        "channel_source" : {
          "type" : "integer"
        },
        "content_id" : {
          "type" : "integer"
        },
        "count_name" : {
          "type" : "integer"
        },
        "count_type" : {
          "type" : "integer"
        },
        "insert_time" : {
          "type" : "date"
         
        },
        "pv" : {
          "type" : "integer"
        }
      }
    },
    "settings" : {
      "index" : {
        "refresh_interval" : "1s",
        "number_of_shards" : "3",
        "translog" : {
          "flush_threshold_size" : "1024m",
          "sync_interval" : "120s",
          "durability" : "async"
        }
      }
    }
  
}
3、创建成功后,执行reindex命令
POST _reindex
{
  "source": {
    "index": "indexName"
  },
  "dest": {
    "index": "indexName_new"
  }
}
4、查询一下indexName_new对应字段的搜索是否好了
GET /indexName_new/_search
{
  "query": {
    "match_all": {}
  }
}
5、设置索引别名或索引再次替换都可以

(1)设置该索引(indexName_new)别名为indexName

PUT  indexName_new/_alias/indexName

POST /_aliases
{
    "actions": [
        {
            "add": {
                "index": "indexName_new",
                "alias": "indexName"
            }
        }
    ]
}

查询索引别名

GET indexName_new/_alias

(2)删除indexName,然后根据上述步骤重新建立indexName,然后reindex** indexName_new数据到indexName,最后删除indexName_new即可**

删除索引命令:文章来源地址https://www.toymoban.com/news/detail-671029.html

DELETE indexName_new

到了这里,关于Elasticsearch Mapping字段未支持索引导致搜索失效的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch 创建索引mapping修改、修复

    背景:原始index名字是indexName,mapping设置错误,且已经有数据进去,想要修改mapping结构 返回结果:表示新建索引成功 下面表示把indexName的数据同步到indexName_1

    2024年02月11日
    浏览(42)
  • 【Elasticsearch教程12】Mapping字段类型之object

    首先给出结论: 在一个字段存储 一个 JSON对象,可以选择 object 类型 在一个字段存储 多个 JSON对象,可以选择 nested 类型 假设有一个人员信息如下: 建表时会建一个字段存一个值,它的缺点是字段 扁平化 , 无法直观的表现 层级关系 。 字段 值 region US manager_age 30 manager_firstn

    2024年02月09日
    浏览(36)
  • 【Elasticsearch学习笔记二】es的Mapping字段映射、Mapping字段常用类型、Mapping映射的创建、查看和更新、es数据迁移、ik分词器

    目录 1、Mapping字段映射概述 2、Mapping字段常用类型 3、映射中对时间类型详解 1)采取自动映射器来映射 2)手工映射提前指定日期类型 4、ES的keyword的属性ignore_above 5、Mapping映射的查看和创建 1)查看mapping信息:GET 索引名/_mapping 2)创建映射:PUT /索引名 3) 查看所有索引映

    2024年01月20日
    浏览(60)
  • like模糊查询导致索引失效的解决方案

    我们在使用like 通配符有下面三种用法,其中第1和第2的用法会引起索引失效的问题。这是因为MySQL的索引是按照从左到右的顺序进行匹配的,而前导通配符(比如%abc)会导致无法按照索引顺序进行匹配。 1、like \\\'%name\\\'   —— 失效 2、like \\\'%name%\\\'  —— 失效 3、like \\\'name%\\\' 现在来

    2024年02月11日
    浏览(43)
  • Elasticsearch学习-索引操作及Mapping映射

    在7.X版本前类似于关系型数据库中的数据库概念,8.X版本后删除了type概念,索引类似于关系型数据库中的表 相当于关系型数据库中的一条数据,最小单元 每一个节点就是一个ES实例(一个java进程),一个节点 != 一台服务器 多个节点组成分布式系统,ES原生分布式,已启动一

    2023年04月22日
    浏览(41)
  • 深入理解Elasticsearch的索引映射(mapping)

    当我们谈论Elasticsearch时,索引映射是一个核心概念,它定义了如何存储和检索数据。在Elasticsearch 7.6及更高版本中,映射提供了一系列强大的功能,使您能够精确地控制数据的结构和行为。本文将详细介绍映射的关键属性、用途以及如何正确设置和优化它。 在Elasticsearch中,

    2024年02月22日
    浏览(45)
  • 解决pandas的concat函数导致索引失效的方法

    最近在写数据的时候看到用一个concat函数进行整合,但是下面这段代码之后就碰上个很奇怪的地方 这段代码首先就是用dfs记录了每一组数据,最后使用concat函数进行连接。在这之后我希望在特定位置插入一列数据 一共有三种类型的文本,10条数据,在df格式下前面也有索引。

    2024年02月11日
    浏览(43)
  • 【Elasticsearch教程6】Mapping字段类型之二进制binary

    binary类型接收一个Base64编码的字符串,默认情况二进制字段 不能被存储和检索 。 binary不能被存储? 这个意思不是说没有存储在ES,而是说mapping中该字段的store参数默认是false。 默认情况下字段的值都会存储到 _source 里, binary 类型的值也是如此。 如果 store 属性设置为true,

    2024年02月05日
    浏览(54)
  • Elasticsearch索引优化指南:分片、副本、mapping和analyzer

    Elasticsearch是一个开源的分布式搜索引擎,它的数据存储和查询速度非常快。然而,在面对大规模的数据集和高并发访问时,Elasticsearch的性能也可能受到一些影响。为了最大程度地提高Elasticsearch的性能,我们需要对索引进行优化。本篇博客将介绍Elasticsearch索引优化的几个关键

    2024年02月20日
    浏览(46)
  • MySQL中IN的取值范围较大时会导致索引失效

    结论:IN肯定会走索引,但是当IN的取值范围较大时会导致 索引失效,走全表扫描 navicat可视化工具使用explain函数查看sql执行信息 1.1 场景1:当IN中的取值只有一个主键时 我们只需要注意一个最重要的type 的信息很明显的提现是否用到索引: type结果值从好到坏依次是: syste

    2024年02月15日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包