Bao nhiêu năm giờ gói gọn học Elasticsearch nodejs trong một video

Nội dung bài viết

Video học lập trình mỗi ngày

Elasticsearch không còn xa lại, một công cụ mạnh mẽ truy vấn dữ liệu. Dể hiểu vì sao các công ty tuyển dụng đều thêm điều kiện "Ưu tiên có kinh nghiệm làm việc với Elasticsearch". Tôi cam đoan bạn sẽ không phí tiền đóng NET để đọc bài viết này.

Chuẩn bị cho một video về Elasticsearch

Bài này sẽ giúp bạn tiếp cận những điều gì? Nếu như đọc qua bạn thấy ok rồi, thì ok đóng tab được rồi:

  • Cách install Elasticsearch macOS hoặc install Elasticsearch Docker.
  • Cách bulk data từ file JSON để test
  • Thủ thuật truy vấn dữ liệu thông qua Elasticsearch để bạn có thể làm được những gì mà Senior làm được.

Elasticsearch là gì

Elasticsearch là một công cụ phân tích và tìm kiếm phân tán dựa trên JSON, được thiết kế để mở rộng theo chiều ngang, tính khả dụng cao và sự thuận tiện trong quản lý

Không nói nhiều về Elasticsearch là gì nữa? Tất cả có trong những bài viết trước. Cụ thể:

Elasticsearch là gì? Mô hình, đặc điểm và cài đặt Elasticsearch

ELK Stack - Elasticsearch, Logstash và Kibana

Install elasticsearch và kibana sử dụng docker

Đối thủ đáng gờm và có thể là tương lai, nếu xác định RediSearch rất ok thì hãy bỏ qua Elasticsearch luôn, tập trung vào học [RediSearch]. Dưới đây chỉ là giới thiệu các điểm chính, nếu muốn hãy vào labs của redis mà học;

Nên sử dụng RediSearch thay vì Elasticsearch?

Install redisearch ubuntu 20.04

Install Elasticsearch nodejs

Chú ý: Hướng dẫn này cho macOS và Homebrew. Nếu chưa cài Homebrew thì run

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Sau đó sử dụng brew để install elasticsearch

$ brew update
$ brew install elasticsearch

Xong thì start

$ brew services start elasticsearch

Ngoài ra có thể install elasticssearch Docker, xem Link install

Học Elasticsearch qua các bước.

Chú ý: Đây là bạn khung sườn của CODE, mình sẽ quay video giải thích dựa trên bài viết này.

Init elasticsearch nodejs:

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

check connect:

//check connect
client.ping({
        requestTimeout: 3000, //ms
    },
    (err, res, sta) => {
        if(err){
            return console.error(`Error connect:::`, err);
        }
        console.log(`isOkay::: connect`);
    }
)

create index:

//create index 

client.indices.create({
    index: 'player-index' //tao index như các db khác
}, (err, res, sta) => {
    console.log(`err, res, sta:::`, err, res, sta);
})

add data to index:

client.index({
    index: "player-index",
    id: 1,
    type: 'player-list',
    body: {
        name: 'ronaldo', // tôi yêu Chị Bảy
        age: 35,
        club: 'MU'
    }
}, (err, res, sta) => {
    console.log(`err, res, sta:::`, err, res, sta);
})

Find chị bảy

client.search({
    index: 'player-index',
    type: 'player-list',
    body: {
        query: {
            match: {
                name: 'ronaldo'
            }
        }
    }
}, (err, res, sta) => {
    // console.log(`err, res, sta:::`, err, res, sta);
    console.log(res.hits.hits);
})

Kết quả:

isOkay::: connect
[
  {
    _index: 'player-index',
    _type: 'player-list',
    _id: '1',
    _score: 0.2876821,
    _source: { name: 'ronaldo', age: 35, club: 'MU' }
  }
]

Bulk data elasticsearch:

let bulk = []

cities.forEach(city => {
    bulk.push({
        index: {
               _index: 'city_index01', // index
               _type: 'city_list01' // type
           }
    })
    bulk.push(city)
});

client.bulk({
    body: bulk
}, (err, res, sta) => {
    console.log(`err, res, sta::`,cities.length);
})

Đừng lo lắng đọc qua đi, mình sẽ làm video cụ thể bạn sẽ hiểu nhanh thôi. Bao nhiêu năm sẽ gói gọn trong 1 video ...

Có thể bạn đã bị missing