2015-08-31 2 views
2

У меня есть документ json, который я хочу индексировать.Документ JSON не удалось индексировать

Но когда я пытаюсь индексировать файл, я всегда получаю сообщение об ошибке.

Мой документ JSON с именем file.json ---

{ 
    "_index": "myIndex", 
    "_type": "myType", 
    "_id": "p1486f499782beb828d870f4a92831720e048514f", 
    "_score": 14.609365, 
    "_source": { 
    "content": "When we hear the word summer we think of beaches, sun tans and tiny bikinis. What we ", 
    "source": "hello.com", 
    "type": "sports", 
    "guid": "p1486f499782beb828d870f4a92831720e048514f", 
    "language": "en" 
    } 
} 

я попытался индексировать файл JSON как так ---

curl -XPOST 'localhost:9200/myIndex/myType' -d @file.json 

{ "Ошибка": "RemoteTransportException [ [Klaatu] [inet [/192.168.1.127:9300]] [индексы: data/write/index]] вложен: MapperParsingException [не удалось разобрать, документ пуст]; "," status ": 400}

я также пытался как и ----

curl -s -XPOST localhost:9200/_bulk --data-binary @file.json 

{ "Ошибка": "ElasticsearchParseException [Не удалось получить xcontent]", "статус": 400}

Как я могу индексировать мой документ, любой знает, как решить эту проблему!

ответ

2

Сначала убедитесь, что file.json содержит только _source содержание и не _index, _type и т.д. Таким образом, в file.json вы должны иметь только это:

{ 
    "content": "When we hear the word summer we think of beaches, sun tans and tiny bikinis. What we ", 
    "source": "hello.com", 
    "type": "sports", 
    "guid": "p1486f499782beb828d870f4a92831720e048514f", 
    "language": "en" 
} 

Тогда вы можете индексировать его как этот

curl -XPOST 'localhost:9200/myIndex/myType/p1486f499782beb828d870f4a92831720e048514f' --data-binary @file.json 

Если вы хотите использовать _bulk endpoint то ваш file.json должны быть немного иначе:

{"index":{"_index":"myIndex", "_type":"myType", "_id": "p1486f499782beb828d870f4a92831720e048514f"}} 
{"content": "When we hear the word summer we think of beaches, sun tans and tiny bikinis. What we ", "source": "hello.com", "type": "sports", "guid": "p1486f499782beb828d870f4a92831720e048514f", "language": "en" } 

Примечание: обязательно завершите свой файл символом новой строки. Символ новой строки не отображается в приведенном выше примере.

И тогда вы можете отправить его как этот

curl -XPOST 'localhost:9200/_bulk' --data-binary @file.json 

Таким образом, нижняя линия является то, что при отправке содержимого документа с помощью файла, вам нужно использовать --data-binary вместо -d

+0

@Great :), Большое спасибо Val :), он работает так же, как вы объяснили :) –

Смежные вопросы