2014-11-28 6 views
5

mam rzekę na mojej lokalnej instancji ES 1.3.4 i JDBC dla MySQL 1.3.4.4ElasticSearch PutMapping API: MapperParsingException typ korzeń mapowanie nie jest pusta po parsowania

Rzeka ta działa poprawnie i importowanie danych w ES. Problem Mam do czynienia z tym, że jedno z moich pól jest polem tekstowym i zawiera spacje. Na przykład "Kalkulator w czasie rzeczywistym". ES indeksuje go jako "rzeczywisty", "czas" i "kalkulator" zamiast "Kalkulatora czasu rzeczywistego".

Więc tworzę mapowania za pomocą niżej wymienionych JSON:

{ 
    "sale_test": { 
     "properties": { 
      "Client": { 
       "index": "not_analyzed", 
       "type": "string" 
      }, 
      "OfferRGU": { 
       "type": "long" 
      }, 
      "SaleDate": { 
       "format": "dateOptionalTime", 
       "type": "date" 
      }, 
      "State": { 
       "type": "string" 
      } 
     } 
    } 
} 

i polecenie:

curl -XPUT http://localhost:9200/my_index/_mapping/my_type 

Ale jestem coraz niżej wymieniony błąd:

> {"error":"MapperParsingException[Root type mapping not empty after 
> parsing! Remaining fields: [sale_test : 
> {properties={Client={type=string, index=not_analyzed}, 
> OfferRGU={type=long}, SaleDate={type=date, format=dateOptionalTime}, 
> State={type=string}}}]]","status":400} 

Kiedy próbuję wyświetl aktualne mapowanie za pomocą poniższej komendy:

curl -XGET http://localhost:9200/dgses/sale_test_river/_mapping 

mam tylko to: {}

Dzięki za pomoc.

Odpowiedz

7

Twój typ nie jest spójny, w API zadzwonić typ jest my_type

curl -XPUT http://localhost:9200/my_index/_mapping/my_type 

wówczas staje sale_test w wiadomości JSON.

Mając spójny typ będzie naprawić problem:

curl -XPUT http://localhost:9200/my_index/_mapping/sale_test -d ' 
    { 
    "sale_test": { 
     "properties": { 
     "Client": {"type": "string", "index": "not_analyzed" }, 
     "OfferRGU": { "type": "long" }, 
     "SaleDate": { "type": "date", "format": "dateOptionalTime" }, 
     "State": { "type": "string" } 
     } 
     } 
    }' 

Tutaj masz zarówno nowy indeks i nowy typ:

curl -XGET http://localhost:9200/dgses/sale_test_river/_mapping 

Korygowanie indeks i typ daje mi:

curl -XGET http://localhost:9200/my_index/sale_test/_mapping?pretty 
{ 
    "myindex" : { 
    "mappings" : { 
     "sale_test" : { 
     "properties" : { 
      "Client" : { 
      "type" : "string", 
      "index" : "not_analyzed" 
      }, 
      "OfferRGU" : { 
      "type" : "long" 
      }, 
      "SaleDate" : { 
      "type" : "date", 
      "format" : "dateOptionalTime" 
      }, 
      "State" : { 
      "type" : "string" 
      } 
     } 
     } 
    } 
    } 
} 
+1

Dzięki. To był problem z pisaniem. Mam mapowanie i po przeczytaniu dokumentacji Elastic Search zdałem sobie sprawę, że nie możemy zaktualizować mapowania dla już utworzonego indeksu. Najpierw musimy usunąć poprzednie mapowanie, a następnie utworzyć nowe mapowanie dla tego indeksu. Jeśli jest jakakolwiek inna droga, podziel się. Dzięki. –

Powiązane problemy