2015-11-19 16 views
7

Próbując stworzyć odwzorowanie pod Elasticsearch 2 za pomocą następującego polecenia, ale to się nie powiedzie:Elasticsearch mapping nie działa

POST /my_blog  
{ 
    "settings": { 
     "index" : { 
      "number_of_shards" : 10 
     } 
    },  
    "mappings": { 
     "post" : {   
      "_routing" : { 
       "required": false, 
       "path" : "post_date" 
      }, 
      "properties": { 
       "user_id" :{ 
        "type": "integer"      
       }, 
       "post_text" : { 
        "type": "string"      
       }, 
       "post_date": { 
        "type" : "date", 
        "format" : "YYYY-MM-DD" 
       } 
      } 
     } 
    } 
} 

Response:

{ 
    "error": { 
     "root_cause": [ 
     { 
      "type": "mapper_parsing_exception", 
      "reason": "Mapping definition for [_routing] has unsupported parameters: [path : post_date]" 
     } 
     ], 
     "type": "mapper_parsing_exception", 
     "reason": "mapping [post]", 
     "caused_by": { 
     "type": "mapper_parsing_exception", 
     "reason": "Mapping definition for [_routing] has unsupported parameters: [path : post_date]" 
     } 
    }, 
    "status": 400 
} 

To nie ma znaczenia, co pole wybiorę dla path, integer/string lub date, zawsze daje tę samą odpowiedź o błędzie (patrz wyżej). Jakieś pomysły?

Odpowiedz

6

Spójrz na type meta-field changes in 2.0. To, co próbujesz zrobić, już nie może być zrobione.

Musisz utworzyć indeks takiego:

POST /my_blog  
{ 
    "settings": { 
     "index" : { 
      "number_of_shards" : 10 
     } 
    },  
    "mappings": { 
     "post" : {   
      "_routing" : { 
       "required": false 
      }, 
      "properties": { 
       "user_id" :{ 
        "type": "integer"      
       }, 
       "post_text" : { 
        "type": "string"      
       }, 
       "post_date": { 
        "type" : "date", 
        "format" : "YYYY-MM-DD" 
       } 
      } 
     } 
    } 
} 

następnie określić trasy w ciągu kwerendy każdego dokumentu indeksowanej, jak:

PUT /my_blog/post/1?routing=2015-11-19 
{ 
    "user_id": 1, 
    "post_text": "Lorem ipsum", 
    "post_date": "2015-11-19" 
} 
+0

Dzięki, wezmę Popatrz. –

+0

A tak naprawdę, jeśli zamierzasz oznaczyć 'routing', ponieważ nie jest to wymagane, możesz równie dobrze zostawić tę klauzulę, o ile mogę powiedzieć. –

Powiązane problemy