java - 索引未知字段时强制使用字符串类型

标签 java elasticsearch nosql

我正在尝试索引文档,其中我不知道我将其声明为对象的文档的一部分。我想要实现的是“告诉”elasticsearch 将我在此对象中给出的任何字段索引为字符串,换句话说,要映射并存储为字符串类型的任何整数、长整型、长整型、日期字段,例如

假设我们有以下文档要索引

{
  "foo":"bar",
  "custom_object":{
    "a_name":"jim",
    "a_date":"2016-3-31"
  }
}

先验地知道custom_object中我的字段的名称是什么,该文档log的映射如下:

"mappings": {
       'log': {
          'properties': {
              'foo': {
                  'type': 'string',
                  'index': 'not_analyzed'
              },
              'custom_object': {
                  'type': 'object'
              }
       }
 }

我怎么知道,我给custom_object内的文档的任何内容都被映射为字符串?如果我遇到这个问题,这主要与日期值有关。我不想用 dynamic=falseenabled =false (取自 documentation )忽略它。有什么想法吗?

最佳答案

您可以使用dynamic templates表示名称 custom_object 中的所有字段都必须映射为 string

定义映射时,可以如下设置

     "dynamic_templates":[
        {
           "custom_object_template":{
              "path_match":"custom_object.*",
              "mapping":{
                 "type": "string"
              }
           }
        }

关于java - 索引未知字段时强制使用字符串类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36342292/

相关文章:

Elasticsearch 滚动不工作

elasticsearch - 如果doc [‘someField’] .value == “some”,则得分+30

mongoDB - 数组值的平均值

c# - RavenDB 中的 'heavy' 聚合函数是否可取?

java - Java swing 应用程序中可以有多少个垂直字段详细信息?

java - 如何让JVM释放内存给OS

C# Nest Elastic Search 通配符查询 - 没有返回结果

node.js - Couchdb 大小管理

java - 使用 Gradle 命令创建 Serenity BDD 骨架项目

java - 如何使按钮在同一布局上动态打开页面?