簡體   English   中英

Elasticsearch索引操作在復雜對象上失敗

[英]Elasticsearch index operation fails on complex object

我正在將數據流索引到Elasticsearch,但我無法弄清楚如何規范傳入的數據以使其正確無誤地建立索引。 我有一個映射類型“ getdatavalues”,它是一個元數據查詢。 此元數據查詢可以返回外觀完全不同的響應,但我看不到差異。 我得到的錯誤:

{"index":{"_index":"ens_event-2016.03.11","_type":"getdatavalues","_id":"865800029798177_2016_03_11_03_18_12_100037","status":400,"error":"MapperParsingException[object mapping for [getdatavalues] tried to parse field [output] as object, but got EOF, has a concrete value been provided to it?]"}}

執行時:

curl -XPUT 'http://192.168.99.100:80/es/ens_event-2016.03.11/getdatavalues/865800029798177_2016_03_11_03_18_12_100037' -d '{
  "type": "getDataValues",
  "input": {
    "deviceID": {
      "IMEI": "865800029798177",
      "serial-number": "64180258"
    },
    "handle": 644,
    "exprCode": "200000010300140000080001005f00a700000000000000",
    "noRollHandle": "478669308-578452",
    "transactionID": 290
  },
  "timestamp": "2016-03-11T03:18:12.000Z",
  "handle": 644,
  "output": {
    "noRollPubSessHandle": "478669308-578740",
    "publishSessHandle": 1195,
    "status": true,
    "matchFilter": {
      "prefix": "publicExpr.operatorDefined.commercialIdentifier.FoodSvcs.Restaurant.\"A&C Kabul Curry\".\"Rooster Street\"",
      "argValues": {
        "event": "InternationalEvent",
        "hasEvent": "anyEvent"
      }
    },
    "transactionID": 290,
    "validFor": 50
  }
}'

這是Elasticsearch用於映射的內容:

  "getdatavalues" : {
    "dynamic_templates" : [ {
      "strings" : {
        "mapping" : {
          "index" : "not_analyzed",
          "type" : "string"
        },
        "match_mapping_type" : "string"
      }
    } ],
    "properties" : {
      "handle" : {
        "type" : "long"
      },
      "input" : {
        "properties" : {
          "deviceID" : {
            "properties" : {
              "IMEI" : {
                "type" : "string",
                "index" : "not_analyzed"
              },
              "serial-number" : {
                "type" : "string",
                "index" : "not_analyzed"
              }
            }
          },
          "exprCode" : {
            "type" : "string",
            "index" : "not_analyzed"
          },
          "handle" : {
            "type" : "long"
          },
          "noRollHandle" : {
            "type" : "string",
            "index" : "not_analyzed"
          },
          "serviceVersion" : {
            "type" : "string",
            "index" : "not_analyzed"
          },
          "transactionID" : {
            "type" : "long"
          }
        }
      },
      "output" : {
        "properties" : {
          "matchFilter" : {
            "properties" : {
              "argValues" : {
                "properties" : {
                  "Interests" : {
                    "type" : "object"
                  },
                  "MerchantId" : {
                    "type" : "string",
                    "index" : "not_analyzed"
                  },
                  "Queue" : {
                    "type" : "string",
                    "index" : "not_analyzed"
                  },
                  "Vibe" : {
                    "type" : "string",
                    "index" : "not_analyzed"
                  },
                  "event" : {
                    "properties" : {
                      "event" : {
                        "type" : "string",
                        "index" : "not_analyzed"
                      },
                      "hasEvent" : {
                        "type" : "string",
                        "index" : "not_analyzed"
                      }
                    }
                  },
                  "hasEvent" : {
                    "type" : "string",
                    "index" : "not_analyzed"
                  },
                  "interests" : {
                    "type" : "string",
                    "index" : "not_analyzed"
                  }
                }
              },
              "prefix" : {
                "type" : "string",
                "index" : "not_analyzed"
              },
              "transactionID" : {
                "type" : "long"
              },
              "validFor" : {
                "type" : "long"
              }
            }
          },
          "noRollPubSessHandle" : {
            "type" : "string",
            "index" : "not_analyzed"
          },
          "publishSessHandle" : {
            "type" : "long"
          },
          "status" : {
            "type" : "boolean"
          },
          "transactionID" : {
            "type" : "long"
          },
          "validFor" : {
            "type" : "long"
          }
        }
      },
      "timestamp" : {
        "type" : "date",
        "format" : "dateOptionalTime"
      },
      "type" : {
        "type" : "string",
        "index" : "not_analyzed"
      }
    }
  },

看起來argValues對象與您的映射不太一致:

        "argValues": {
            "event": "InternationalEvent",
            "hasEvent": "anyEvent"
        }

可以這樣:

        "argValues": {
            "event": {
                "event": "InternationalEvent"
            },
            "hasEvent": "anyEvent"
        }

或這個:

        "argValues": {
            "event": {
                "event": "InternationalEvent"
                "hasEvent": "anyEvent"
            },
        }

兩者似乎都是有效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM