在弹性搜索中为索引下的文档类型创建映射时出错

时间:2019-08-09 10:42:44

标签: elasticsearch lucene

嗨,我正在尝试使用kibana控制台通过弹性搜索在索引“电子商务”下创建文档类型“产品”。

PUT /ecommerce
{
  "mappings": {
    "product": {
      "properties": {
        "name": {
          "type": "string"
        },
        "price": {
          "type": "double"
        },
        "description": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        },
        "categories": {
          "type": "nested",
          "properties": {
            "name": {
              "type": "string"
            }
          }
        },
        "tags": {
          "type": "string"
        }
      }
    }
  }
}

运行此请求时,出现以下错误

{
  "error": {
    "root_cause": [
      {
        "type": "mapper_parsing_exception",
        "reason": "Root mapping definition has unsupported parameters:  [product : {properties={quantity={type=integer}, price={type=double}, name={type=string}, description={type=string}, categories={type=nested, properties={name={type=string}}}, status={type=string}, tags={type=string}}}]"
      }
    ],
    "type": "mapper_parsing_exception",
    "reason": "Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters:  [product : {properties={quantity={type=integer}, price={type=double}, name={type=string}, description={type=string}, categories={type=nested, properties={name={type=string}}}, status={type=string}, tags={type=string}}}]",
    "caused_by": {
      "type": "mapper_parsing_exception",
      "reason": "Root mapping definition has unsupported parameters:  [product : {properties={quantity={type=integer}, price={type=double}, name={type=string}, description={type=string}, categories={type=nested, properties={name={type=string}}}, status={type=string}, tags={type=string}}}]"
    }
  },
  "status": 400
}

任何想法,我的看跌期权有什么问题。 非常感谢

2 个答案:

答案 0 :(得分:0)

您不能在ES 7.0版之后的版本中创建类型,并且该类型已被弃用。您从此link

获得以下可用信息
  

不建议在请求中指定类型。例如,索引一个   文档不再需要文档类型。新的索引API是   如果有明确的ID和POST {index} / _ doc,请放置{index} / _ doc / {id}   用于自动生成的ID。请注意,在7.0版中,_doc是   路径,并表示端点名称而不是文档   类型。

我建议您遵循here

中提到的任何方法

基本上可以为每种文档类型创建 新索引 ,也可以仅添加 新自定义类型 字段。

下面是您的映射方式:

results="hide", include= "FALSE"

基本上,如果您尝试提取任何新文档,则必须使用以下端点:

POST <your_new_index_name>
{  
   "mappings":{  
      "properties":{  
         "name":{  
            "type":"string"
         },
         "price":{  
            "type":"double"
         },
         "description":{  
            "type":"string"
         },
         "status":{  
            "type":"string"
         },
         "quantity":{  
            "type":"integer"
         },
         "categories":{  
            "type":"nested",
            "properties":{  
               "name":{  
                  "type":"string"
               }
            }
         },
         "tags":{  
            "type":"string"
         }
      }
   }
}

希望这会有所帮助!

答案 1 :(得分:0)

我将查询重写如下,并且可以正常工作。

PUT /ecommerce
{
  "mappings": {
      "properties": {

        "name": {
          "type": "text"
        },

        "price": {
          "type": "double"
        },

        "description": {
          "type": "text"
        },

        "status": {
          "type": "text"
        },

        "quantity": {
          "type": "integer"
        },
        "categories": {
          "type": "nested",
          "properties": {
            "name": {
              "type": "text"
            }
          }
        },
        "tags": {
          "type": "text"
        }

    }
  }
}