Отклонение ошибки обновления отображения в базе данных при передаче данных в индекс эластичного поиска - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь использовать облачные функции Firebase для передачи данных в мой индекс ElasticSearch, и у меня возникла ошибка в Firebase.Где может быть проблема?

Вот мой код функции index.js

const functions = require('firebase-functions');

const request = require('request-promise')

exports.indexPostsToElastic = functions.database.ref('/posts/{post_id}')
        .onWrite((change,context) =>{
        let postData = change.after.val();
        let post_id = context.params.post_id;

        console.log('Indexing post',postData);

        let elasticSearchConfig = functions.config().elasticsearch;


        let elasticSearchUrl = elasticSearchConfig.url + 'posts/' + post_id;
        let elasticSearchMethod = postData ? 'POST' : 'DELETE';

        let elasticSearchRequest = {
            method:elasticSearchMethod,
                url: elasticSearchUrl,
                auth:{
                    username : elasticSearchConfig.username,
                    password : elasticSearchConfig.password,
                },
                body: postData,
                json : true
              };
              return request(elasticSearchRequest).then(response => {
                  return console.log("ElasticSearch response", response);
              })
            });

И ниже - ошибка, которую я получаю в Firebase

StatusCodeError: 400 - {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Rejecting mapping update to [posts] as the final mapping would have more than 1 type: [_doc, -LcVpBay0SLV3c6fnpgt]"}],"type":"illegal_argument_exception","reason":"Rejecting mapping update to [posts] as the final mapping would have more than 1 type: [_doc, -LcVpBay0SLV3c6fnpgt]"},"status":400}
    at new StatusCodeError (/user_code/node_modules/request-promise/node_modules/request-promise-core/lib/errors.js:32:15)

Вот мой индексный код в почтальоне

{
    "mappings":{
        "properties":{
                "city":{
                    "type": "text"
                },
                "contact_email":{
                    "type": "text"
                },
                "country":{
                    "type": "text"
                },
                "description":{
                "type": "text"
                },
                "image":{
                "type": "text"
                },
                "post_id":{
                    "type": "text"
                },
                "state_province":{
                    "type": "text"
                },
                "title":{
                    "type": "text"
                }
            }
        }
}

1 Ответ

1 голос
/ 15 апреля 2019

Как следует из сообщения об ошибке, несколько типов сопоставления были удалены. https://www.elastic.co/guide/en/elasticsearch/reference/6.0/removal-of-types.html

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