elasticsearch 弹性搜索映射程序\u分析\u异常错误,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch 弹性搜索映射程序\u分析\u异常错误,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch 弹性搜索映射程序\u分析\u异常错误

elasticsearch 弹性搜索映射程序\u分析\u异常错误,elasticsearch,kibana,elasticsearch,Kibana,我已经用name test在弹性搜索中创建了一个索引。索引映射如下所示: { "title": { "type": "text", "fields": { "raw": { "type": "keyword" } } }, "url": { "type": "text", "fields": {

我已经用name test在弹性搜索中创建了一个索引。索引映射如下所示:

{
    "title": {
        "type": "text",
        "fields": {
            "raw": {
                "type": "keyword"
            }
        }
    },
    "url": {
        "type": "text",
        "fields": {
            "raw": {
                "type": "keyword"
            }
        }
    }
}
创建索引后,我向其中添加了以下文档:

 {
    "title": "demo",
    "url": {
        "name": "tiger",
        "age": 10
    }
}
但我得到了以下错误:

{“mapper\u parsing\u exception”,“reason”:“未能解析的字段[url] 键入[文本]“}


有人能帮我解释一下吗?

如果您的文档是这样的:

{
    "title": "demo",
    "url": {
        "name": "tiger",
        "age": 10
    }
}
然后您的映射需要如下所示,即
url
是一个具有
name
age
字段的对象:

{
  "title": {
    "type": "text",
    "fields": {
      "raw": {
        "type": "keyword"
      }
    }
  },
  "url": {
    "properties": {
      "name": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "age": {
        "type": "integer"
      }
    }
  }
}

如果您的文档如下所示:

{
    "title": "demo",
    "url": {
        "name": "tiger",
        "age": 10
    }
}
然后您的映射需要如下所示,即
url
是一个具有
name
age
字段的对象:

{
  "title": {
    "type": "text",
    "fields": {
      "raw": {
        "type": "keyword"
      }
    }
  },
  "url": {
    "properties": {
      "name": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "age": {
        "type": "integer"
      }
    }
  }
}

您好,您需要像这样创建映射

PUT test
{
    "settings" : {
        "number_of_shards" : 1
    },
    "mapping": {
    "title": {
      "type": "text",
      "fields": {
        "raw": {
          "type": "keyword"
        }
      }
    },
    "url": {
      "type": "text",
      "fields": {
        "raw": {
          "type": "keyword"
        }
      }
    }
  }
} 
文件是

put test/doc/1
{
    "title": "demo",
    "url": {
        "name": "tiger",
        "age": 10
    }
}


GET test/doc/1
结果是

{
  "_index" : "test",
  "_type" : "doc",
  "_id" : "1",
  "_version" : 1,
  "_seq_no" : 0,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "title" : "demo",
    "url" : {
      "name" : "tiger",
      "age" : 10
    }
  }
}

您好,您需要像这样创建映射

PUT test
{
    "settings" : {
        "number_of_shards" : 1
    },
    "mapping": {
    "title": {
      "type": "text",
      "fields": {
        "raw": {
          "type": "keyword"
        }
      }
    },
    "url": {
      "type": "text",
      "fields": {
        "raw": {
          "type": "keyword"
        }
      }
    }
  }
} 
文件是

put test/doc/1
{
    "title": "demo",
    "url": {
        "name": "tiger",
        "age": 10
    }
}


GET test/doc/1
结果是

{
  "_index" : "test",
  "_type" : "doc",
  "_id" : "1",
  "_version" : 1,
  "_seq_no" : 0,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "title" : "demo",
    "url" : {
      "name" : "tiger",
      "age" : 10
    }
  }
}

是的,它工作正常,但在我的例子中,我的url字段不是json对象,每次它都像普通文本一样:{“url”:“/abc”}名字和年龄并不是每次都以字段的形式出现,基本上一切都是动态的,所以我不知道它是文本还是对象,如果它是对象,我不知道对象的键,那么我如何处理这个问题?这确实是个问题,在接收之前需要一个处理步骤,以便标准化您的文档。A在这里可能会有所帮助。但是在这里我如何更改url字段的数据类型我已经在映射中创建了文本类型的url字段?如何解决这个错误?是的,它工作得很好,但在我的例子中,我的url字段不是json对象,有时它像普通文本一样:{“url”:“/abc”}名字和年龄并不是每次都以字段的形式出现,基本上一切都是动态的,所以我不知道它是文本还是对象,如果它是对象,我不知道对象的键,那么我如何处理这个问题?这确实是个问题,在接收之前需要一个处理步骤,以便标准化您的文档。A在这里可能会有所帮助。但是在这里我如何更改url字段的数据类型我已经在映射中创建了文本类型的url字段?如何解决这个错误呢?