структура json для массовой вставки недопустима - PullRequest
0 голосов
/ 18 октября 2019
Elasticsearch version : 7.1
Postman version : 7.8.0

Elastic Search Url: http://localhost:9200/menu/_bulk

mapping

 "mappings": {
            "properties": {
                "input": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "output": {
                    "properties": {
                        "category": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "item": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "items": {
                            "properties": {
                                "category": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "item": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "modifiers": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                }
                            }
                        },
                        "modifiers": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "quantity": {
                            "type": "long"
                        }
                    }
                }
            }
        }

Ошибка, которую я получаю:

{
    "error": {
        "root_cause": [
            {
                "type": "illegal_argument_exception",
                "reason": "Malformed action/metadata line [3], expected START_OBJECT or END_OBJECT but found [VALUE_STRING]"
            }
        ],
        "type": "illegal_argument_exception",
        "reason": "Malformed action/metadata line [3], expected START_OBJECT or END_OBJECT but found [VALUE_STRING]"
    },
    "status": 400

Expected Result: успешнодобавление новых документов в индекс menu

Procedure

Я пытаюсь выполнить массовую вставку с elastic search. Я сослался на документацию, и это пример, который они предоставили ниже.

{ "index" : { "_index" : "testindex", "_type" : "somerandomtype", "_id" : "1" } }
{ "somefield" : "value1" }
{ "index" : { "_index" : "testindex", "_type" : "somerandomtype", "_id" : "2" } }
{ "somefield" : "hello hello hello" }

Я основал свое форматирование таким же образом, но я продолжаю получать ошибку. Вот как выглядит мой body, который входит в postman.

{"index": { "_index": "menu", "_type":"_doc" } }
{"input": "angus-burger", "output": {
"category": "Sides", "item": "Angus-Deluxe Burger", "modifiers": [], "quantity": 1} }

Что я здесь не так делаю?

Ответы [ 3 ]

1 голос
/ 18 октября 2019

Ваш формат Json действительно неверен. Раздел тела почтальона покажет ошибку с данным Json. Кроме того, тело массового запроса не должно быть в одном действительном Json.

Используйте те же данные с curl, и результат будет успешным.

Кроме того, при использовании данных команды с POSTMAN каждый'section' должен находиться внутри одной строки (т.е. каждая строка представляет один действительный json). Более того, не должно быть пустых строк. (здесь есть некоторые сходства с командой 'bcp')

Итак, это будет работать

 {"index": { "_index": "menu", "_type":"_doc" } }
 {"input": "angus-burger", "output": {"category": "Sides", "item": "Angus-Deluxe Burger", "modifiers": [], "quantity": 2} }

Но это не будет работать в почтальоне для массовой вставки

{
    "index": {
        "_index": "menu",
        "_type": "_doc"
    }
}
{
    "input": "angus-burger",
    "output": {
        "category": "Sides",
        "item": "Angus-Deluxe Burger",
        "modifiers": [],
        "quantity": 2
    }
}
0 голосов
/ 18 октября 2019

Похоже, формат тела был неверный. После публикации ниже, я смог успешно опубликовать на Elassearch. Стоит отметить, что у почтальона он должен быть таким, чтобы каждая строка была как можно ближе к другой. Под этим я подразумеваю, что у вас не должно быть промежутков между вашим телом в конце новой строки.

{"index": { "_index": "menu", "_type":"_doc" } }
{"input": "angus-burger", "output": {"category": "Sides", "item": "Angus-Deluxe Burger", "modifiers": [], "quantity": 1} }
0 голосов
/ 18 октября 2019

"Ваш формат JSON неверен. Вы можете скопировать код и проверить" Регулярно посещайте http://json.parser.online.fr/!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...