2015-10-22 155 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中填充的索引。因此,錯誤有點奇怪