ElasticSearch的js的封装及使用说明

本文介绍了如何利用ElasticSearch的JS API进行详细调试,并展示了如何判断服务状态。通过设置`log: 'trace'`可查看构造和返回消息。`search`方法用于查询过滤数据,支持设置index、HTTP方法、请求体、filterPath等参数。内容包括指定返回数量、排序、聚合查询(如平均值、求和)和基本查询。API返回Promise,可转换为Observable。获取所有index需借助_alias和filter_path。filterPath可选择性返回或排除查询结果的特定节点。
摘要由CSDN通过智能技术生成
typescript的封装

es有官方的js api, 但是官方的body构造比较复杂, github上有第三方的bodybuilder组件专门用来构造DSL的查询部分

比如:

/*
-> POST http://localhost:9200/*scanstatistics* /_count
{
"query": {
"bool": {
"must": [
{
"match": {
"systemID": "987654321098"
}
},
{
"range": {
"timeStamp": {
"gte": "now/M"
}
}
}
]
}
}
}
<- 200
{
"count": 30,
"_shards": {
"total": 15,
"successful": 15,
"skipped": 0,
"failed": 0
}
}
*/

getScanCount2(systemID: string, dateRange: any, indices: any = '*scanstatistics*'): Observable<SearchResponse<{}>> {
const body = bodybuilder()
.addQuery('match', 'systemID', systemID)
.addQuery('range', 'timeStamp', dateRange)
.build();

return fromPromise(<Promise<SearchResponse<{}>>>
this._client.count({ index: indices, body: body, method: 'POST' })
);
}

说明:
  1. es的js api可以调试构造的消息和返回的消息详细信息, 具体是在构造es 的client时指定log: 'trace'
  2. 可以用ping来判断es的service的状态是否正常工作, 可以指定requestTimeout为Infinity
  3. es的js api有search方法, 用来从es中查询过滤数据, 具体可以指定es的index、http方法、请求的body、filterPath等。filterPath用来指定返回的结果的元素节点。
  4. body中可以指定返回的数量size、排序sort、分类aggregation、以及基本的查询query等
  5. 分类aggregation中可以指定以什么分类, 以及分类中的值如何统计, 比如是平均avg、求和sum等。普通类用'terms';  时间分类用'date_histogram',并可以指定时间间隔interval、时间格式format
  1.     es的js api默认的接口都是返回promise, 可以通过rxjs转为Observable

import { Observable } from 'rxjs/rx';
import { fromPromise } from 'rxjs/observable/fromPromise';
import { Client, SearchResponse } from 'elasticsearch';

//返回值用 Observable<SearchResponse<{}>> 包装
//通过
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值