ElasticSearch及插件安装

序言:Lucene和Solr和Elasticsearch的区别

Lucene

Lucene是apache下的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。官网地址:https://lucene.apache.org/

Solr

Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。官网地址:http://lucene.apache.org/solr/

Elasticsearch
Elasticsearch跟Solr一样,也是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。官网地址:https://www.elastic.co/products/elasticsearch

原文:https://blog.****.net/ms_lang/article/details/83215015

1、Elasticsearch的优缺点:
优点:

1.Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。

2.Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。

3.处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。

4.Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。

5.各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。

缺点:

1.只有一名开发者(当前Elasticsearch GitHub组织已经不只如此,已经有了相当活跃的维护者)

2.还不够自动(不适合当前新的Index Warmup API)

2、Solr的优缺点:
优点

1.Solr有一个更大、更成熟的用户、开发和贡献者社区。

2.支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。

3.Solr比较成熟、稳定。

4.不考虑建索引的同时进行搜索,速度更快。

缺点

1.建立索引时,搜索效率下降,实时索引搜索效率不高。

3、Elasticsearch 与 Solr 的比较:

1.二者安装都很简单;

2.Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;

3.Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;

4.Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;

5.Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。

6.Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。

使用案例:

1.*使用Elasticsearch来进行全文搜做并高亮显示关键词,以及提供search-as-you-type、did-you-mean等搜索建议功能。

2.英国卫报使用Elasticsearch来处理访客日志,以便能将公众对不同文章的反应实时地反馈给各位编辑。

3.*将全文搜索与地理位置和相关信息进行结合,以提供more-like-this相关问题的展现。

4.GitHub使用Elasticsearch来检索超过1300亿行代码。

5.每天,Goldman Sachs使用它来处理5TB数据的索引,还有很多投行使用它来分析股票市场的变动。

优点:

1.Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。

2.Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。

3.处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。

4.Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。

5.各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。

缺点:

1.只有一名开发者(当前Elasticsearch GitHub组织已经不只如此,已经有了相当活跃的维护者)

2.还不够自动(不适合当前新的Index Warmup API)

2、Solr的优缺点:
优点

1.Solr有一个更大、更成熟的用户、开发和贡献者社区。

2.支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。

3.Solr比较成熟、稳定。

4.不考虑建索引的同时进行搜索,速度更快。

缺点

1.建立索引时,搜索效率下降,实时索引搜索效率不高。

3、Elasticsearch 与 Solr 的比较:

1.二者安装都很简单;

2.Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;

3.Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;

4.Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;

5.Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。

6.Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。

使用案例:

1.*使用Elasticsearch来进行全文搜做并高亮显示关键词,以及提供search-as-you-type、did-you-mean等搜索建议功能。

2.英国卫报使用Elasticsearch来处理访客日志,以便能将公众对不同文章的反应实时地反馈给各位编辑。

3.*将全文搜索与地理位置和相关信息进行结合,以提供more-like-this相关问题的展现。

4.GitHub使用Elasticsearch来检索超过1300亿行代码。

5.每天,Goldman Sachs使用它来处理5TB数据的索引,还有很多投行使用它来分析股票市场的变动。

安装ELK-Elasticsearch

首先elkuser用户登录:
启动顺序:
(1)cd elasticsearch-6.1.0
bin/elasticsearch -d
(2)cd elasticsearch-head
grunt server &
(3)cd kibana-6.6.1
bin/kibana &

web界面查看:
http://192.168.100.200:9100/
http://192.168.100.200:9200/
http://192.168.100.200:5601/

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。要负责数据存储与搜索。

1、Elasticsearch安装所需环境

Elasticsearch对于JAVA JDK环境有要求,需要JDK1.8或以上的支持
先查看 `rpm -qa | grep java`,如果openjdk,则可使用yum remove来删除
[[email protected] /]# `rpm -qa | grep java`
java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
[[email protected] /]#`yum -y remove java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5`

下载JDK之后,解压文件,并设置PATH、JAVA_HOME既可以配置完成。

2、Elasticsearch下载安装及配置

[[email protected] local]# `tar -zxvf elasticsearch-6.1.0.tar.gz`
[[email protected] elasticsearch-6.1.0]# pwd
/usr/local/elasticsearch-6.1.0

(1)Elasticsearch配置文件
现在我们来配置config/elasticsearch.yml文件,

======================== Elasticsearch Configuration =========================

 NOTE: Elasticsearch comes with reasonable defaults for most settings.

 Before you set out to tweak and tune the configuration, make sure you

 understand what are you trying to accomplish and the consequences.



 The primary way of configuring a node is via this file. This template lists
 the most important settings you may want to configure for a production cluster.
#
# Please consult the documentation for further information on configuration options:
# https://www.elastic.co/guide/en/elasticsearch/reference/index.html
#
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: jun-application
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: centOS7
#
# Add custom attributes to the node:

node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
#path.data: /path/to/data
#
# Path to log files:
#
#path.logs: /path/to/logs
#
# ----------------------------------- Memory -----------------------------------
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 192.168.100.200
#
# Set a custom port for HTTP:
#
http.port: 9200
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
#
# Prevent the "split brain" by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1):
#
#discovery.zen.minimum_master_nodes: 
#
# For more information, consult the zen discovery module documentation.
#
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#
#gateway.recover_after_nodes: 3
#
# For more information, consult the gateway module documentation.
#
# --------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true

http.cors.enabled: true
http.cors.allow-origin: "*"
增加用户:useradd -d /usr/username -m username
为用户增加密码:passwd username
新建工作组:groupadd groupname
将用户添加进工作组:usermod -G groupname username
删除用户:userdel username

(2)Elasticsearch创建普通用户
[[email protected] /]# useradd elkuser
#elasticsearch 只能用非 root 启动
[[email protected] /]# chown -R elkuser.elkuser elasticsearch-6.1.0

(3)Elasticsearch文件打开数及堆大小检测
1.max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

修改/etc/security/limits.conf文件,添加或修改如下行:

	*        hard    nofile           65536
	*        soft    nofile           65536

2.max virtual memory areas vm.max……

修改 /etc/sysctl.conf 文件,添加如下行:
vm.max_map_count=262144
修改好了以后,运行/sbin/sysctl -p

重启以后,再启动es即可,就可以通过主机ip访问。

3.如果是内存不足就需要调整内存大小了或者调整config/jvm.options的参数

在elasticsearch-6.1.0/config目录中有jvm.options文件,可以设置JVM大小
[[email protected] config]# pwd
/usr/local/elasticsearch-6.1.0/config
[[email protected] config]# ls
elasticsearch.yml jvm.options log4j2.properties
[[email protected] config]# vi jvm.options
-Xms2g
-Xmx2g

(4)启动Elasticsearch
前序工作全部准备完成后,即可在elasticsearch-6.1.0目录中的bin目录下执行elasticsearch-6.1.0文件:
[[email protected] bin]# ./elasticsearch
[[email protected] bin]# ./elasticsearch -d 可以使其在后台运行

(5)浏览器访问 http://localhost:9200 ,可以查看到对应的节点信息,如下显示则说明启动正常:

3、Elasticsearch安装Head插件

Elasticsearch-head是一个界面化的集群操作和管理工具,可以对集群进行傻瓜式操作。你可以通过插件把它集成到es(首选方式),也可以安装成一个独立webapp。
  ES-head主要有四个方面的操作:

显示集群的拓扑,并且能够执行索引和节点级别操作
搜索接口能够查询集群中原始json或表格格式的检索数据
能够快速访问并显示集群的状态
有一个输入窗口,允许任意调用RESTful API。这个接口包含几个选项,可以组合在一起以产生有趣的结果;
 - 请求方法(get、put、post、delete),查询json数据,节点和路径
 - 支持JSON验证器
 - 支持重复请求计时器
 - 支持使用javascript表达式变换结果
 - 收集结果的能力随着时间的推移(使用定时器),或比较的结果
 - 能力图表转换后的结果在一个简单的条形图(包括时间序列)

(1)安装git

yum install git

(2)Nodejs安装

[[email protected] local]#tar -xvf node-v8.9.0-linux-x64.tar.xz
[[email protected] node-v8.9.0]# pwd
/usr/local/node-v8.9.0

配置NODE_HOME,进入profile编辑环境变量

vim /etc/profile
设置nodejs环境变量

	#set for nodejs
	export NODE_HOME=/usr/local/node-v8.9.0
	3export PATH=$NODE_HOME/bin:$PATH

source /etc/profile
验证是否安装配置成功
node -v

(3)Grunt安装

npm install -g grunt-cli
grunt -version – 安装后 ,查看 grunt版本。

(4)下载 head 插件的源码并安装

git clone git://github.com/mobz/elasticsearch-head.git

第一步:elasticsearch-head/Gruntfile.js,增加hostname属性

	connect: {
	    server: {
	        options: {
	            port: 9100,
	            hostname: '0.0.0.0',
	            base: '.',
	            keepalive: true
	        }
	    }
	}

第二步:
elasticsearch-head/_site/app.js。修改head的连接地址

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
把localhost修改成你es的服务器地址,如:
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.100.200:9200";

第三步:然后在elasticsearch-head源码目录中,执行npm install:
npm install -g
npm install grunt --save-dev
执行 npm run start

(需要下面这些依赖):
npm install grunt-contrib-clean --registry=https://registry.npm.taobao.org
npm install grunt-contrib-concat --registry=https://registry.npm.taobao.org
npm install grunt-contrib-watch --registry=https://registry.npm.taobao.org
npm install grunt-contrib-connect --registry=https://registry.npm.taobao.org
npm install grunt-contrib-copy --registry=https://registry.npm.taobao.org
npm install grunt-contrib-jasmine --registry=https://registry.npm.taobao.org

原文:https://blog.****.net/laotoumo/article/details/53890279

第四步:在elasticsearch-head源代码目录下启动nodejs,
运行grunt server
运行成功后,访问 http://localhost:9100 网站,即可看到elasticsearch的相关信息

4、Linux安装Kibana

地址:https://mp.weixin.qq.com/s?__biz=MzAxMjY5NDU2Ng==&mid=2651853123&idx=1&sn=4060d547481b4ea23982228ab97fcdce&chksm=8049540ab73edd1c171a0655154c723a70dcc9f88de1591b1192db75323354ab8dd29fe9bbcb&xtrack=1&scene=0&subscene=131&clicktime=1552135310&ascene=7&devicetype=android-22&version=2700033b&nettype=WIFI&abtest_cookie=BQABAAgACgALABIAEwAGAJ6GHgAjlx4AVpkeAL2ZHgDSmR4A3JkeAAAA&lang=en&pass_ticket=NCLi2F0HmXz7hbfNnB89%2FgSBEXLELurZZwA8Nlf%2FzzTFOVYdy%2BB7YDSFWUAuof%2B9&wx_header=1

Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。

Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。
一、安装kibana6.0
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-linux-x86_64.tar.gz
tar -zxvf kibana-6.0.0-linux-x86_64.tar.gz -C /opt/modules/
mv /opt/modules/kibana-6.0.0-linux-x86_64 /opt/modules/kibana
cd /opt/modules/kibana

二、配制文件
mkdir -p /opt/data/logs/kibana
chmod 777 /opt/data/logs/kibana
vi /opt/modules/kibana/config/kibana.yml
kibana.yml内容

server.name: "MyKibana"
server.host: "192.168.46.132"
server.port: 5601
#可通过 http://192.168.46.132:5601 在浏览器访问
server.name: "MyKibana"
server.host: "192.168.100.200"
server.port: 5601
#指定elasticsearch节点
elasticsearch.url: "http://192.168.46.132:9200"
pid.file: /var/run/kibana.pid
# 日志目录
logging.dest: /opt/data/logs/kibana/kibana.log
# 间隔多少毫秒,最小是100ms,默认是5000ms即5秒
ops.interval: 5000

修改好配置文件后,就可以启动Kibana服务了。
/opt/modules/kibana/bin/kibana

在浏览器访问:http://192.168.46.132:5601
初次进入需要至少创建一个索引模板,这个是对应elasticsearch中的索引;
默认给的是logstash-*,由于在es中我已经有test索引了,所以我直接在这里输入test然后点创建就可以了。
创建好索引模板后,在Discover(发现),左边选择test,右上角选择时间,就可以看到es中的数据了,左边可以选择要显示的

5、安装Logstash

https://www.cnblogs.com/blogjun/articles/8064646.html
一、什么是Logstash
Logstash是一个开源的、接受来自多种数据源(input)、过滤你想要的数据(filter)、存储到其他设备的日志管理程序。Logstash包含三个基本插件input\filter\output,一个基本的logstash服务必须包含input和output.

Logstash如何工作:

Logstash数据处理有三个阶段,input–>filter–>output.input生产数据,filter根据定义的规则修改数据,output将数据输出到你定义的存储位置。

ElasticSearch及插件安装
Inputs:

数据生产商,包含以下几个常用输出:

file: 从文件系统中读取文件,类似使用tail -0F

syslog: syslog服务,监听在514端口使用RFC3164格式

redis: 从redis服务读取,使用redis管道和列表。

beats: 一种代理,自己负责收集好数据然后转发给Logstash,常用的如filebeat.

Filters:

filters相当一个加工管道,它会一条一条过滤数据根据你定义的规则,常用的filters如下:

grok: 解析无规则的文字并转化为有结构的格式。

mutate: 丰富的基础类型处理,包括类型转换、字符串处理、字段处理等。

drop: 丢弃一部分events不进行处理,例如: debug events

clone: 负责一个event,这个过程中可以添加或删除字段。

geoip: 添加地理信息(为前台kibana图形化展示使用)

Outputs:

elasticserache elasticserache接收并保存数据,并将数据给kibana前端展示。

output 标准输出,直接打印在屏幕上。

二、Logstash的安装配置
Logstash运行仅仅依赖java运行环境(jre),JDK版本1.8以上即可。直接从ELK官网下载Logstash:https://www.elastic.co/cn/products

1 # tar -zxvf logstash-6.1.0.tar.gz
2 # cd logstash-6.1.0
现在我们来运行一下一个简单的例子:

1 # bin/logstash -e 'input { stdin { } } output { stdout {} }'
我们现在可以在命令行下输入一些字符,然后我们将看到logstash的输出内容:

1 hello world 
2 2017-11-21T01:22:14.405+0000 0.0.0.0 hello world 

Ok,还挺有意思的吧… 以上例子我们在运行logstash中,定义了一个叫”stdin”的input还有一个”stdout”的output,无论我们输入什么字符,Logstash都会按照某种格式来返回我们输入的字符。这里注意我们在命令行中使用了-e参数,该参数允许Logstash直接通过命令行接受设置。这点尤其快速的帮助我们反复的测试配置是否正确而不用写配置文件。
让我们再试个更有意思的例子。首先我们在命令行下使用CTRL-C命令退出之前运行的Logstash。现在我们重新运行Logstash使用下面的命令:

1 # bin/logstash -e 'input { stdin { } } output { stdout { codec => rubydebug } }'

我们再输入一些字符,这次我们输入”hello world ”:

1 hello world2 {
3   "message" => "hello world",
4   "@timestamp" => "2017-11-20T23:48:05.335Z",
5   "@version" => "1",
6   "host" => "node1"
7 }

以上示例通过重新设置了叫”stdout”的output(添加了”codec”参数),我们就可以改变Logstash的输出表现。类似的我们可以通过在你的配置文件中添加或者修改inputs、outputs、filters,就可以使随意的格式化日志数据成为可能,从而订制更合理的存储格式为查询提供便利。

前面已经说过Logstash必须有一个输入和一个输出,上面的例子表示从终端上输入并输出到终端。

数据在线程之间以事件的形式流传。不要叫行,因为Logstash可以处理多行事件。

input {

    # 输入域,可以使用上面提到的几种输入方式。stdin{} 表示标准输入,file{} 表示从文件读取。

    input的各种插件:     https://www.elastic.co/guide/en/logstash/current/input-plugins.html

}

output {

    #Logstash的功能就是对数据进行加工,上述例子就是Logstash的格式化输出,当然这是最简单的。

    output的各种插件:https://www.elastic.co/guide/en/logstash/current/output-plugins.html

}

Logstash配置文件和命令:

Logstash的默认配置已经够我们使用了,从5.0后使用logstash.yml文件,可以将一些命令行参数直接写到YAML文件即可。

–configtest 或 -t 用于测试Logstash的配置语法是否正确,非常好的一个参数。

–log 或 -l Logstash默认输出日志到标准输出,指定Logstash的日志存放位置

–pipeline-workers 或 -w 指定运行filter和output的pipeline线程数量,使用默认就好。

-f 指定规则文件,可以将自己的文件放在同一个路径下,使用-f 即可运行。

一个简单的Logstash从文件中读取配置

 1 vim file.conf  #file.conf可以放在任意位置
 2 input {
 3         stdin {
 4         }
 5 }
 6 output {
 7         stdout {
 8                 codec=>rubydebug
 9         }
10 }
12  bin/logstash -f /root/conf/file.conf  #启动即可

三、一些常用的插件
1、grok插件

Grok是Logstash最重要的插件,你可以在grok里自定义好命名规则,然后在grok参数或者其他正则表达式中引用它。

官方给出了120个左右默认的模式:https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns

1 USERNAME [a-zA-Z0-9._-]+
2 USER %{USERNAME}
第一行,用普通的正则表达式来定义一个grok表达式;第二行,通过打印赋值格式,用前面定义好的grok表达式来定义里一个grok表达式。

正则表达式引格式:

1 %{SYNTAX:SEMANTIC}
SYNTAX:表示你的规则是如何被匹配的,比如3.14将会被NUMBER模式匹配,55.1.1.2将会被IP模式匹配。

SEMANTIC:表示被匹配到的唯一标识符,比如3.14被匹配到了后,SEMANTIC就当是3.14。

匹配到的数据默认是strings类型,当然你也可以装换你匹配到的数据,类似这样:

%{NUMBER:num:int}
当前只支持装换为int和float。

例如:

1 filter {
2     grok {
3         match => {
4             "message" => "%{WORD} %{NUMBER:request_time:float} %{WORD}"
5         }
6     }
7 }
1 jasi 12.12 asioa
2 {
3       "@timestamp" => 2017-02-08T05:55:18.460Z,
4     "request_time" => 12.12,
5         "@version" => "1",
6             "host" => "0.0.0.0",
7          "message" => "jasi 12.12 asioa"
8 }

这个我们就匹配到我们想要的值了,并将名字命名为:request_time

在实际生产中为了方便我们不可能在配置文件中一行一行的写表达式,建议把所有的grok表达式统一写到一个地方,使用patterns_dir选项来引用。

1 grok {
2        patterns_dir => "/root/conf/nginx"  #这是你定义的grok表达式文件
3        match => { "message" => "%{CDN_FORMAT}" }
4        add_tag => ["CDN"]
5 }

事实上,我们收集的日志也有很多不需要的地方,我们可以删除一部分field信息,保留我们想要的那一部分。

 1 grok {
 2        match => {
 3                 "message" => "%{WORD} %{NUMBER:request_time:float} %{WORD}"
 4         }
 5         remove_field => [ "request_time" ]
 6         overwrite => [ "message" ]
 7         }
 8 as 12 as
 9 {
10     "@timestamp" => 2017-02-08T06:39:07.921Z,
11       "@version" => "1",
12           "host" => "0.0.0.0",
13        "message" => "as 12 as"
14 }

已经没有request_time这个field啦~

更多关于grok的用户看官方文档:https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html

最重要的一点:我强烈建议每个人都要使用 Grok Debugger 来调试自己的 grok 表达式。

2、kv插件

在很多的情况下,日志类容本身就是类似于key-value的格式,kv插件就是自动处理类似于key=value样式的数据。

kv {
       source => "request"  #数据来源,默认是message
       field_split => "&" # 用于分割键值对
       value_split => "="  # 识别键值对的关系,如 k1:v1 k2:v2 ":"即为键值对关系连接符
}

3、geoip插件

geoip主要是查询IP地址归属地,用来判断访问网站的来源地。
1         geoip {
2                 source => "clientip"
3                 fields => [ "ip","city_name","country_name","location" ]  #fields包含信息太多,可以自定义
4         }

Logstash还有许多比较常用的插件,如json\multiline等,可以到官方文档查看。