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 ...