mapper_parsing_exception in Elasticsearch(原因:没有为字段 [X] 指定类型)

mapper_parsing_exception in Elasticsearch(Reason: No type specified for field [X])

我想为我的文档中的字段提供显式映射,所以我为我的索引演示定义了一个映射,如下所示:

PUT /demo
{
  "mappings": {
    "properties": {
          "X" : {
            "X" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            },
            "Sub_X" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            }
          }
    }
  }
}


在 运行 查询之后,我收到如下错误:

{
  "error" : {
    "root_cause" : [
      {
        "type" : "mapper_parsing_exception",
        "reason" : "No type specified for field [X]"
      }
    ],
    "type" : "mapper_parsing_exception",
    "reason" : "Failed to parse mapping [_doc]: No type specified for field [X]",
    "caused_by" : {
      "type" : "mapper_parsing_exception",
      "reason" : "No type specified for field [X]"
    }
  },
  "status" : 400
}

json 文档中的字段 X 如下所示:

"X" : {
      "X" : [
        "a"
      ],
      "Sub_X" : [
        [
          "b"
        ]
      ]
    },

请帮我解决这个弹性搜索 mapper_parse_exception 错误。

你所拥有的叫做nested data type

您有 X,其中又包含 XSub_X

映射:

{
  "properties": {
    "X": {
      "type": "nested"
    }
  }
}
    

数据:

{
  "X": {
    "X": [
      "a"
    ],
    "Sub_X": [
      [
        "b"
      ]
    ]
  }
}

查询:

{
  "query": {
    "nested": {
      "path": "X",
      "query": {
        "bool": {
          "must": [
            { "match": { "X.X": "a" }},
            { "match": { "X.Sub_X":  "b" }} 
          ]
        }
      }
    }
  }
}

输出文档。