2015-10-22 147 views
1

在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

看看您的索引('GET index_name/_mapping')的映射并查找名为'contactNames'的字段。该字段的“类型”应该是“嵌套”的。如果不是,那么错误是合法的。 –

+0

该索引尚未应用,所以感谢您的回复。它指出我在正确的方向! – Dirkos

+0

以及如何获取此嵌套类型? – fpopic

回答

-1

查看您的索引映射,contactNames需要嵌套类型。

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

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

然后它不会为expeted你扔异常和工作。

1

问题是没有在Elasticsearch中填充的索引。因此,错误有点奇怪