1. 安装
1) ES
linux新建andy用户,不能用root用户操作,解压包,config 目录,编辑elasticsearch.yml
添加内网ip
启动
nohup ./elasticsearch &
2) kibana
config 目录对 Kibana 进行配置
需注意: 需要给andy用户权限,如果报如下错误,需切换到root用户进行操作
- 切换到root用户修改配置sysctl.conf : vi /etc/sysctl.conf
- 添加下面配置:vm.max_map_count=655360
- 并执行命令:sysctl -p
启动
nohup ./kibana &
使用:
关闭
使用 fuser -n tcp 5601
kill -9 端口
3) logstash
需安装到需要记录日志的服务器上,如果多服务器需要记录之日,可以考虑filebeat去采集日志,然后发给logstash,logstash只做grok工作。
第一步: Logstash 的启动命令位于安装路径的 bin 目录中,直接运行 logstash 不行,
需要按如下方式提供参数:
./logstash -e "input {stdin {}} output {stdout{}}"
出现 Successfully 即为成功了
第二步: Logstash 安装路径下的config 目录中, logstash-sample.conf 复制改名为std_es. conf
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
file{
path => "/mnt/logs/freight-api/freight-api-info.log"
type => "apilog"
start_position => "beginning"
stat_interval => "3"
}
}
output {
if[type] == "apilog" {
elasticsearch {
hosts => ["http://*.*.35.237:9200"]
index => "log-api-%{+YYYY-MM-dd}"
#user => "elastic"
#password => "changeme"
}
}
}
第三步: 关掉logstash,进入bin 目录再次启动logstash
nohup ./logstash -f ../config/std_es.conf &
2. 基本操作
1. kibana操作
#列出所有索引
GET /_cat/indices?v
#删除索引
DELETE /es
#创建索引
put es
#查看索引
get es
#添加文档
PUT /es/_doc/1
{
"msg":"Hello World!"
}
#查看文档
get /enjoy_test/_doc/1
#查询索引下所有数据
get cargo-order/_search
{
"query":{
"match_all":{}
}
}
#解决10000默认数据问题,降序
get uat_user_behavior/_search
{
"query":{
"match_all":{}
},
"track_total_hits":true,
"sort": [
{ "createDate" : { "order" : "desc"}}
]
}
# 基本查询,分页
get cargo-order/_search
{
"from":0,
"size":6,
"query":{
"term":{
"frId":2
}
}
}
# term 精准查找
get cargo-order/_search
{
"query":{
"term": {
"frId": 2
}
}
}
# terms 相当于sql中的in
get cargo-order/_search
{
"query":{
"terms": {
"frId": [1,2]
}
}
}
#term多个字段
get pro_user_behavior/_search
{
"query": {
"dis_max": {
"queries": [
{ "term": { "referer.keyword": "order/CusOrderDetail" } },
{ "term": { "type": "5" } }
]
}
}
}
# bool查询
#must: 必须匹配,与and等价。贡献算分
#must_not:必须不匹配,与not等价,常过滤子句用,但不贡献算分
#should: 选择性匹配,至少满足一条,与 OR 等价。贡献算分
#filter: 过滤子句,必须匹配,但不贡献算分
## 需要注意的是must与should同时使用时候,不可平级出现,必须是一个嵌套在另一个其中
get pro_user_behavior/_search
{
"query": {
"bool": {
"must": [{
"term": {
"type": 5
}
},
{
"bool": {
"should": [{
"term": {
"referer": "order/CargoMasterDetail"
}
}, {
"term": {
"type": 5
}
}]
}
}
],
"filter": {
"term": {
"type": 5
}
}
}
}
}
# range 范围:gte:大于等于 gt:大于 lte:小于等于 lt:大于
get cargo-order/_search
{
"query":{
"range": {
"frId": {
"gte":2,
"lte":5
}
}
}
}
# prefix前缀 wildcard通配符 regexp正则表达式
#全文检索
get cargo-order/_search
{
"query":{
"match": {
"commodity": "冰箱小"
}
}
}
# multi_match多字段全文检索
get cargo-order/_search
{
"query":{
"multi_match": {
"query":"描述",
"fields": ["createdDate","commodity"]
}
}
}
# bool-must-filter结合
# 查询商户ID为3582,订单号为360102199003072618,按时间范围过滤,按下单时间倒序,每次查询100条
{
"query": {
"bool": {
"must": [{
"term": {
"merchant_id": "3582"
}
}, {
"term": {
"order_num": "360102199003072618"
}
}],
"filter": [{
"range": {
"order_time": {
"from": "2019-11-01T17:00:00+08:00",
"to": "2019-11-01T20:00:00+08:00"
}
}
}]
}
},
"size": 100,
"sort": [{
"order_time": "desc"
}]
}
# bool-must-should-match
# 查询venderId值为1234,taskId为1234,字段itemCodes和templateCodes的值至少有一个match匹配到结果,才返回对应数据集。
# 即must下两个terms同时满足,should下两个match至少满足一条
{
"bool": {
"must": [{
"terms": {
"venderId": [
"1234"
]
}
},
{
"terms": {
"taskId": [
"1234"
]
}
},
{
"should": [{
"match": {
"itemCodes": {
"query": "12,124"
}
}
},
{
"match": {
"templateCodes": {
"query": "t123,t124,t125"
}
}
}
]
}
]
}
}
# bool-must-wildcard-range
# 根据促销ID和促销名称查询某个时间段的促销,并时间排序
{
"from": 0,
"size": 10,
"query": {
"bool": {
"must": [{
"term": {
"promt_id": {
"value": 200352052277
}
}
}, {
"wildcard": {
"promt_name": {
"wildcard": "*业务部*"
}
}
}, {
"range": {
"promt_end_time": {
"from": "2022-10-01 00:00:00"
}
}
}, {
"range": {
"promt_begin_time": {
"to": "2022-10-31 23:59:59"
}
}
}]
}
},
"sort": [{
"created_time": {
"order": "desc",
"unmapped_type": "keyword"
}
}]
}