elasticsearch查询及logstash简介
Query DSL:
request body:
分成两类:
query dsl:执行full-text查询时,基于相关度来评判其匹配结果;
查询执行过程复杂,且不会被缓存;
filter dsl:执行exact查询时,基于其结果为“yes”或“no”进行评判;
速度快,且结果缓存
查询语句的结构:
{
QUERY_NAME: {
AGGUMENT: VALUE,
ARGUMENT: VALUE,...
}
}
{
QUERY_NAME: {
FIELD_NAME: {
ARGUMENT: VALUE,...
}
}
}
filter dsl:
term filter:精确匹配包含指定term的文档;
The term query performs no analysis on the input text, so it will look for exactly the value that is supplied
{ "term": {"name": "Guo"} }
curl -XGET 'localhost:9200/students/_search?pretty' -d '{
"query": { "term": { "first_name": "jing" } }}' 在查询时这个j不能写成大些,不然查不到
terms filter:用于多值精确匹配;
{ "terms": { "name": ["Guo", "Rong"] }}
curl -XGET 'localhost:9200/students/_search?pretty' -d '{
"query": {
"terms": {
"age": [25,24,23]
}
}
}'
range filters:用于在指定的范围内查找数值或时间
curl -XGET 'localhost:9200/students/_search?pretty' -d '{
"query": {
"range": {
"age": {
"gte": 20,
"lt": 30
}
}
}
}'
boolean filter:
基于boolean的逻辑来合并多个filter子句;
must:其内部所有的子句条件必须同时匹配,即and;
must: {
"term": { "age": 25 }
"term": { "gender": "Female" }
}
must_not:其所有子句必须不匹配,即not
must_not: {
"term": { "age": 25 }
}
should:至少有一个子句匹配,即or
should: {
"term": { "age": 25 }
"term": { "gender": "Female" }
}
QUERY DSL:
match_all Query:
用于匹配所有文档,没有指定任何query,默认即为match_all query
curl -XGET 'localhost:9200/students/_search?pretty' -d '{
"query": { "match_all": {} }}'
match Query:
在几乎任何域上执行full-text或exact-value查询
如果执行full-text查询:首先对查询时的语句做分析;
{ "match": {"students": "Guo" }}
如果执行exact-value查询:搜索精确值;此时,建议使用过滤,而非查询
curl -XGET 'localhost:9200/students/_search?pretty' -d '{
"query": { "match": { "first_name": "Rong,Jing" } }}'
multi_match Query:
用于在多个域上执行相同的查询
curl -XGET 'localhost:9200/students/_search?pretty' -d '{
"query": {
"multi_match": {
"query": "Rong,Jing",
"fields": [ "last_name","first_name" ]
}
}
}'
合并filter和query:
{
"filterd": {
query: { "match": {"gender": "Female"} }
filter: { "term": {"age": 25}}
}
}
ELK stack的另外两个组件:
L: logstash
K: Kibina
Logstash:
支持多数据获取机制,通过TCP/UDP协议、文件、syslog、windows EventLogs及STDIN等;获取到数据后,它支持对数据执行过
滤、修改等操作
JRuby语言开发的,必须运行在JVM上,agent/server模型
logstash的安装,先去官网下载软件包,logstash-1.5.6-1.noarch.rpm,官网就是elasticsearch的官网
yum -y install logstash-1.5.6-1.noarch.rpm
默认logstash的命令程序装在了这个目录下/opt/logstash/bin/,因此 vim /etc/profile.d/logstash.sh
export PATH=/opt/logstash/bin:$PATH
exec bash
默认的配置文件为/etc/logstash/conf.d/目录下所有以.conf结尾的文件,默认此目录下不会有任何文件
创建一个简单的配置文件: vim sample.conf
input {
stdin{}
}
output {
stdout{
codec => rubydebug
}
}
其中codec => rubydebug是固定格式,整段代码的意思是从标准输入读数据,输出至标准输出
logstash -f /etc/logstash/conf.d/sample.conf --configtest 此命令可以测试语法是否正确
logstash -f /etc/logstash/conf.d/sample.conf 运行程序 接下来输入一个hello 就可以看到JSON格式显示的信息
{
"message" => "hello",
"@version" => "1",
"@timestamp" => "2016-07-20T07:57:19.458Z",
"host" => "centos7"
}
logstash的基本配置框架:
input {
...
}
filter {
...
}
output {
...
}
Logstash的工作流程:input | filter | output, 如无需对数据进行额外处理,filter可省略
四种类型的插件:
input, filter, codec, output
数据类型:
Array:[item1, item2,...]
Boolean:true, false
Bytes:
Codec:编码器
Hash:key => value
Number:数值
Password:
Path:文件系统路径;
String:字符串
字段引用:[]
条件判断:
==, !=, <, <=, >, >=
=~, !~
in, not in
and, or
()
elasticsearch查询及logstash简介的更多相关文章
- logstash快速入门实战指南-Logstash简介
作者其他ELK快速入门系列文章 Elasticsearch从入门到精通 Kibana从入门到精通 Logstash是一个具有实时流水线功能的开源数据收集引擎.Logstash可以动态统一来自不同来源的 ...
- elasticsearch查询篇索引映射文档数据准备
elasticsearch查询篇索引映射文档数据准备 我们后面要讲elasticsearch查询,先来准备下索引,映射以及文档: 我们先用Head插件建立索引film,然后建立映射 POST http ...
- ELK学习实验010:Logstash简介
Logstash是具有实时流水线功能的开源数据收集引擎.Logstash可以动态统一来自不同来源的数据,并将数据规范化为您选择的目标.清除所有数据并使其民主化,以用于各种高级下游分析和可视化用例. 虽 ...
- elasticsearch 查询(match和term)
elasticsearch 查询(match和term) es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL). 由于DSL查询更为直观也更为简 ...
- Func<T,T>应用之Elasticsearch查询语句构造器的开发
前言 之前项目中做Elasticsearch相关开发的时候,虽然借助了第三方的组件PlainElastic.Net,但是由于当时不熟悉用法,而选择了自己拼接查询语句.例如: string queryG ...
- ElasticSearch查询 第五篇:布尔查询
布尔查询是最常用的组合查询,不仅将多个查询条件组合在一起,并且将查询的结果和结果的评分组合在一起.当查询条件是多个表达式的组合时,布尔查询非常有用,实际上,布尔查询把多个子查询组合(combine)成 ...
- 利用kibana插件对Elasticsearch查询
利用kibana插件对Elasticsearch查询 Elasticsearch是功能非常强大的搜索引擎,使用它的目的就是为了快速的查询到需要的数据. 查询分类: 基本查询:使用Elasticsear ...
- ElasticSearch查询 第四篇:匹配查询(Match)
<ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...
- elasticsearch查询语句总结
query 和 filter 的区别请看:https://www.cnblogs.com/bainianminguo/articles/10396956.html Filter DSL term 过 ...
随机推荐
- debian SSD ext4 4K 对齐
新入手了一台thinkpad, 原来的机械硬盘是500G的, 于是购入一块镁光的MX200 250G的SSD来新装debian stable(jessie) 1, 安装系统的之前按住F1进入bios后 ...
- MapReduce小文件处理之CombineFileInputFormat实现
在MapReduce使用过程中.一般会遇到输入文件特别小(几百KB.几十MB).而Hadoop默认会为每一个文件向yarn申请一个container启动map,container的启动关闭是很耗时的. ...
- appearance 设置公共属性
//设置公共TabBarItem 的属性 [UITabBarItem appearance] //设置公共NavigationBar 的属性 [UIBarButtonItem appearance]
- spring事务管理实现方式
声明式事务 tx及aop配置,利于管理,耦合性低,可读性低 @Transactional注解,不利管理,耦合性高,可读性高 编程式事务 TransactionTemplate类,spring推荐方法 ...
- kill 命令
Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须 ...
- HDFS源码分析数据块校验之DataBlockScanner
DataBlockScanner是运行在数据节点DataNode上的一个后台线程.它为所有的块池管理块扫描.针对每个块池,一个BlockPoolSliceScanner对象将会被创建,其运行在一个单独 ...
- u-boot中断功能初步分析之---------按键中断
作者:彭东林 邮箱:pengdonglin137@163.com QQ: 405728433 以前一直有个疑问,在U-boot下到底能不能使用中断,为了验证这个问题,于是乎,昨天晚上我在自己的 TQ2 ...
- PHP性能之语言性能优化:vld——查看代码opcode的神器
vld介绍 vld是PECL(PHP 扩展和应用仓库)的一个PHP扩展,现在最新版本是 0.14.0(2016-12-18),它的作用是:显示转储PHP脚本(opcode)的内部表示(来自PECL的v ...
- DAO调用存储过程问题
相关文章:1.使用 Spring 框架调用 DB2 存储过程 2.Spring如何使用JdbcTemplate调用存储过程的三种情况 3.spring中调用存储过程,函数
- GDB + gdbserver 远程调试mediaserver进程
远程调试步骤 在Android设备上启动gdbserver并attach你想调试的进程,并指定监听调试命令的端口(此端口是TV上的端口) $ adb shell # ps |grep media # ...