当前位置: 首页 > 面试题库 >

Elasticsearch Date字段的默认值

季森
2023-03-14
问题内容

我正在使用以下方法在ES中创建动态映射:

{
  "template": "infobox*",
  "mappings": {
    "_default_": {
      "dynamic_templates": [
        {
          "string_fields": {
            "match": "*",
            "match_mapping_type": "string",
            "mapping": {
              "type": "string",
              "index": "analyzed",
              "analyzer": "my_completion_analyzer",
              "fielddata": {
                "format": "disabled"
              },
              "fields": {
                "raw": {
                  "type": "string",
                  "index": "not_analyzed",
                  "ignore_above": 256
                }
              }
            }
          }
        }
      ]
    }
  }
}

因此,每当我为具有date字段(birthYear)的文档建立索引时,它都会自动创建birthYear具有date类型的字段()。因此,每当没有a时birthYear,我都会发送一个空字符串'',然后引发异常mapper_parsing_exception, failed to parse [birthYear]

有什么办法可以解决这个问题?我可以指定默认值吗?


问题答案:

您可以添加ignore_malformed: true到所有date字段,也可以全局设置:

date字段

  "dynamic_templates": [
    {
      "string_fields": {
        "match": "*",
        "match_mapping_type": "string",
        "mapping": {
          "type": "string",
          "index": "analyzed",
          "analyzer": "whitespace",
          "fielddata": {
            "format": "disabled"
          },
          "fields": {
            "raw": {
              "type": "string",
              "index": "not_analyzed",
              "ignore_above": 256
            }
          }
        }
      }
    },
    {
      "date_fields": {
        "match": "*",
        "match_mapping_type": "date",
        "mapping": {
          "type": "date",
          "ignore_malformed": true
        }
      }
    }
  ]

全局设置

{
  "settings": {
    "index.mapping.ignore_malformed": true
  }, 
  "mappings": {
    "_default_": {
      "dynamic_templates": [
        {
          "string_fields": {
            "match": "*",
            "match_mapping_type": "string",
            "mapping": {
              "type": "string",
              "index": "analyzed",
              "analyzer": "whitespace",
              "fielddata": {
                "format": "disabled"
              },
              "fields": {
                "raw": {
                  "type": "string",
                  "index": "not_analyzed",
                  "ignore_above": 256
                }
              }
            }
          }
        }
      ]
    }
  }
}


 类似资料:
  • 问题内容: 我在设置Avro字段的默认值时遇到了一些问题。我有一个简单的架构,如下所示: data.avsc: 我正在使用 avro-maven-plugin v1.7.6 生成Java模型。 当我使用:创建模型的实例时 ,它会失败并出现以下异常: org.apache.avro.AvroRuntimeException:org.apache.avro.AvroRuntimeException:字

  • 我在设置Avro字段的默认值时遇到了一些问题。我有一个简单的模式,如下所示: 数据avsc: 我使用的是avro maven插件v1。7.6生成Java模型。 当我使用:创建模型的实例时,它会失败,但有一个异常: org.apache.avro.AvroRuntimeExc0019:org.apache.avro.AvroRuntimeExc0019:字段id类型: UNION pos: 0未设置

  • 我不明白为什么我应用程序会删除异常“字段'ID_Employeer'没有默认值”。 是我的主键,当我试图将任何信息保存到我的数据库时,我得到了这个异常,但是,当我只是试图从DB读取信息时,它是正常的。 我读了关于StackOverflow的主题,但我仍然不明白我应用程序中的答案。我正在使用Hibernate5.2.11。 我的: 我的冬眠: 下一个CharacterInfo类 主类 最后例外

  • 问题内容: 我似乎找不到或编写一个选择默认值的sqlquery (我不认为我可以在phpmyadmin中生成它供我复制) 我试图选择它,就好像它是一条记录,但无济于事… 问题答案: 或者我认为更好: 更新-更正 正如@Jeff Caron所指出的,只有在中至少有1行时,上述内容才有效。如果即使分组表没有行也要得到结果,则可以使用以下命令:

  • 问题内容: 假设我有一个模型: 目前,我正在使用默认的admin创建/编辑此类型的对象。如何从管理员中删除该字段,以使每个对象都无法使用值创建,而是将接收默认值? 问题答案: 设置为和为默认值。 http://docs.djangoproject.com/en/dev/ref/models/fields/#editable 另外,你的字段是不必要的。Django将自动添加它。

  • 现有的MySQL表有一个DateTime字段,该字段不为null,默认值设置为'0001-00-0000:00:00'。是否可以更改此表以移除DateTime字段的默认值?