javascript 节点基本操作中的弹性搜索

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 节点基本操作中的弹性搜索相关的知识,希望对你有一定的参考价值。

const elasticsearch = require('elasticsearch');
const LineByLineReader = require('line-by-line');

const client = new elasticsearch.Client({
  host: 'localhost:9200'
});

const index = 'dota';
const type = 'heroes';
const doc = {
  'hero': 'drow ranger', 
  'id': 1,
  'type': 'agility',
  'role': 'carry'
}

const docs = [{
  'hero': 'dazzle',
  'id': 2,
  'type': 'int',
  'role': 'support'
}, {
  'hero': 'warlock',
  'id': 3,
  'type': 'int',
  'role': 'support'
}];

client.ping({
  // ping usually has a 3000ms timeout
  requestTimeout: 1000
}, function (error) {
  if (error) {
    console.trace('elasticsearch cluster is down!');
  } else {
    console.log('All is well');
    insert(index, type, doc).then(console.log).catch(console.log);
    del(index, type, doc).then(console.log).catch(console.log)
    search(index, type, 'drow' ).then(console.log).catch(console.log);
    bulkInsert(index, type, docs).then(console.log).catch(console.log);
    bulkInsert(index, type, docs).then(console.log).catch(console.log);
  }
});

function delay(timer) {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve();
    }, timer);
  });
}

async function insert(index, type, doc) {
  return await client.index({
    index, 
    type, 
    id: doc.id, 
    body: doc,
  });
}

async function del(index, type, doc) {
  return await client.delete({
    index,
    type,
    id: doc.id,
  });
}

async function search(index, type, searchTerm) {
  return await client.search({
    index, 
    type,
    body: {
      query: {
        match: {
          body: searchTerm,
        },
      },
    },
  });
}

async function bulkInsert(index, type, docs) {
  const bulk = [];
  docs.forEach(doc => {
    bulk.push(
      { index: { _index: index, _type: type, _id: doc.id || doc.quizId } },
      doc,
    );
  });
  console.log(bulk);
  return await client.bulk({ body: bulk});
}

async function bulkDelete(index, type, docs) {
  const bulk = [];
  docs.forEach(doc => {
    bulk.push(
      { delete: { _index: index, _type: type, _id: doc.id || doc.quizId } }    
    );
  });
  return await client.bulk({ body: bulk});
}

async function bulkUpdate(index, type, docs) {
  const bulk = [];
  docs.forEach(doc => {
    bulk.push(
      { update: { _index: index, _type: type, _id: doc.id || doc.quizId } }, 
      {doc}
    );
  });
  return await client.bulk({ body: bulk});
}

以上是关于javascript 节点基本操作中的弹性搜索的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearches 面试题 积累

无法通过弹性搜索与 dockerized 进程进行通信,并显示“所有已配置的节点都不可用”

python 在图形上实现广度优先搜索以查找连接的组件以及通过删除节点来测试图形弹性的各种方法

是否有可能对弹性搜索中的热门命中结果进行聚合?

[JavaScript 刷题] 树 - 删除二叉搜索树中的节点, leetcode 450

[JavaScript 刷题] 树 - 删除二叉搜索树中的节点, leetcode 450