解析Elasticsearch的错误嵌套对象

时间:2015-10-22 11:11:13

标签: json elasticsearch

在搜索Elasticsearch期间,我收到以下错误。

  

QueryParsingException [[dev_app] [嵌套]路径下的嵌套对象   [contactNames]不是嵌套类型];

在检查实际文档时,以下请求对象有效 https://www.elastic.co/guide/en/elasticsearch/reference/1.6/query-dsl-nested-query.html

这是请求对象:

[
  {
    "query": {
      "bool": {
        "must": [
          {
            "constant_score": {
              "query": {
                "match": {
                  "contactBookId": {
                    "query": 15496
                  }
                }
              }
            }
          },
          {
            "constant_score": {
              "query": {
                "nested": {
                  "path": "contactNames",
                  "query": {
                    "bool": {
                      "must": [
                        {
                          "match": {
                            "contactNames.fullName": {
                              "query": "fewafwa"
                            }
                          }
                        },
                        {
                          "match": {
                            "contactNames.nameIndex": {
                              "query": "1"
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        ]
      }
    },
    "size": 100
  }
]

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

问题在于未在Elasticsearch中填充的索引。因此错误有点奇怪

答案 1 :(得分:-1)

检查索引映射,contactNames需要是嵌套类型。

它应该是这样的(根据您的需要采用它):

{
  "mappings": {
    "yourType": {
      "properties": {
        "contactNames": {
          "type": "nested",
          "properties": {
            "fullName": {
              "type": "string"
            },
            "nameIndex": {
              "type": "integer"
            }
          }
        }
      }
    }
  }
}

然后它不会给你一个例外而且会像被开除一样工作。