Как установить для include_type_name в почтальоне значение true - PullRequest
0 голосов
/ 16 апреля 2019

Я создаю индекс соответствия в почтальоне и получаю сообщение об ошибке ниже. Я пытаюсь создать индекс, который будет взаимодействовать с моим сервером эластичного поиска Firebase, используя функцию, которую я создал index.js. В чем может быть проблема?

Вот мой код

"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"
                }
            }
        }
    }

Вот код функции 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 => {
                  console.log("ElasticSearch response", response);
                  return 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, -LcajBAxUn3jrq0EHzYa]"}],

Вот пример моей базы данных в firebase

-LcajBAxUn3jrq0EHzYa

city:

contact_email:

country:

description:

image:

post_id:

price:

state_province:

title: 

Пожалуйста, помогите мне определить, где может быть моя ошибка.

1 Ответ

0 голосов
/ 27 апреля 2019

include_type_name - флаг эластичного поиска, представленный в нескольких последних выпусках. Смотрите фон здесь . Его цель - устранить давнюю путаницу упругого поиска type != tableName. Чтобы включить include_type_name в свои запросы, см. this .

Это скорее проблема API Elasticsearch, кроме firebase / postman.

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