Передача только нескольких данных в JSON.parse () в Elasticsearch - PullRequest
0 голосов
/ 25 сентября 2019

Здесь я должен только разрешить несколько данных, поступающих из JSON и индексации в Elasticsearch.Так каков идеальный способ сделать это, вместо того, чтобы удалять каждое из них по отдельности?

var elasticData= JSON.parse(result.body);
        elasticData = elasticData.res;
        elasticData["id"] = elasticData._id;
        delete elasticData["__v"];
        delete elasticData["_id"];
        delete elasticData["addressee"];
        delete elasticData["abbreviation"];
        delete elasticData["care_of"];
        delete elasticData["address_1"];
        delete elasticData["address_2"];
        delete elasticData["company_id_legacy"];        
        elasticSearch_common.createCompanyIndex(elasticData);

Например: мне нужно только передать ("name","id","address"), а остальным я не хочу его передавать.Но есть много других данных, доступных в том же JSON.

{
    "userId":"34234234234gjgjg894734g",
  "company":{ 
  "id" : "21", 
  "addressee" : {
      "addressee" : "EXAMPLE", 
      "title_name" : "", 
      "salutation" : "Dear:", 
      "comments" : "", 
      "email" : "one@one.com", 
      "phone" : "", 
      "fax" : "", 
      "extention_group" : "", 
      "ext" : ""
  }, 
  "abbreviation" : "", 
  "care_of" : "", 
  "address_1" : "2", 
  "address_2" : "", 
  "address_3" : "", 
  "state" : "CA", 
  "zip" : "90024", 
  "is_deleted" : false, 
  "company_code" : "sdas", 
  "parent_company" : null, 
  "name" : "NIOE", 
  "createdBy" : "Dat", 
  "modifiedBy" : "Dat", 
  "createdDate" : "2019-08-22T19:10:50.000+0000", 
  "modifiedDate" : "2019-08-22T19:10:50.000+0000", 
}

Это фактический JSON, и я хочу, чтобы данные индекса индекса эластичного поиска были ниже.

{ name: 'NIOE',
  id: '21' }

1 Ответ

1 голос
/ 25 сентября 2019

Как насчет белого списка?

// raw data you get from wherever
const elasticData = JSON.parse(result.body);

// object to index into ES
const toIndex = {};

// whitelist of fields to index
["name", "id", "address"].forEach(field => {
  toIndex[field] = elasticData.company ? elasticData.company[field] : null;
});

// assert: toIndex now contains only the fields you want to index
elasticSearch_common.createCompanyIndex(toIndex);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...