注意: 以下demo皆是基于es7.x,代码的语言基于node,用的是@elastic/elasticsearch三方包。首先是引入三方包
const { Client } = require('@elastic/elasticsearch')
const client = new Client({ node: 'http://localhost:9200' })
新增
-
kibana操作
- node
async function run() {
// 创建文档
await client.create({
id: '4',
index: 'test',
body: {
firstName: 'x',
lastName: 'c',
tags: ['码农', '愤青']
}
})
}
run().catch(console.log)
当然也可以不传id,这时候es会自动给这个document生成id。
查看
- kibana
- node
// 查看文档文档
let result = await client.get({
id: '4',
index: 'test'
})
console.log(result)
修改
修改有点复杂,分为两种:
- Index(注意这里的Index是动词,是指修改document的)
它会将原来的文档删除,重新建 - update
它会在原来的字段上面增加新的字段
- node:
await client.index({
id: '1',
index: 'test',
type: '_update',
body: {
doc: {
cc: 123 // update操作
}
}
})
await client.index({
id: '1',
index: 'test',
body: {
firstName:'x' // index操作
}
})
批量读取
-
kibana
可以从不同的索引中读取数据
- node
// 批量读取
let result = await client.mget({
body: {
docs: [
{
"_index": "kibana_sample_data_logs",
"_id": "Lhryp2wBSmjcLNNkGPRq"
},
{
"_index": "test",
"_id": "1"
}
]
}
})
console.log(result.body.docs)
批量操作查询
-
kibana
这里面的body体是成对出现的,格式为
header\n
body\n
header\n
body\n
- node
// msearch
let result = await client.msearch({
index: 'kibana_sample_data_logs',
body: [
{},
{ "query": { "match_all": {} }, "from": 0, "size": 10 },
{ "index": "test" },
{ "query": { "match_all": {} } }
]
})
console.log(result)