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简介的更多相关文章

  1. logstash快速入门实战指南-Logstash简介

    作者其他ELK快速入门系列文章 Elasticsearch从入门到精通 Kibana从入门到精通 Logstash是一个具有实时流水线功能的开源数据收集引擎.Logstash可以动态统一来自不同来源的 ...

  2. elasticsearch查询篇索引映射文档数据准备

    elasticsearch查询篇索引映射文档数据准备 我们后面要讲elasticsearch查询,先来准备下索引,映射以及文档: 我们先用Head插件建立索引film,然后建立映射 POST http ...

  3. ELK学习实验010:Logstash简介

    Logstash是具有实时流水线功能的开源数据收集引擎.Logstash可以动态统一来自不同来源的数据,并将数据规范化为您选择的目标.清除所有数据并使其民主化,以用于各种高级下游分析和可视化用例. 虽 ...

  4. elasticsearch 查询(match和term)

    elasticsearch 查询(match和term) es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL). 由于DSL查询更为直观也更为简 ...

  5. Func<T,T>应用之Elasticsearch查询语句构造器的开发

    前言 之前项目中做Elasticsearch相关开发的时候,虽然借助了第三方的组件PlainElastic.Net,但是由于当时不熟悉用法,而选择了自己拼接查询语句.例如: string queryG ...

  6. ElasticSearch查询 第五篇:布尔查询

    布尔查询是最常用的组合查询,不仅将多个查询条件组合在一起,并且将查询的结果和结果的评分组合在一起.当查询条件是多个表达式的组合时,布尔查询非常有用,实际上,布尔查询把多个子查询组合(combine)成 ...

  7. 利用kibana插件对Elasticsearch查询

    利用kibana插件对Elasticsearch查询 Elasticsearch是功能非常强大的搜索引擎,使用它的目的就是为了快速的查询到需要的数据. 查询分类: 基本查询:使用Elasticsear ...

  8. ElasticSearch查询 第四篇:匹配查询(Match)

    <ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...

  9. elasticsearch查询语句总结

    query 和  filter 的区别请看:https://www.cnblogs.com/bainianminguo/articles/10396956.html Filter DSL term 过 ...

随机推荐

  1. spark sql的简单操作

    测试数据 sparkStu.text zhangxs chenxy wangYr teacher wangx teacher sparksql { ,"job":"che ...

  2. 2013 年最好的 20 款免费 jQuery 插件

    2013 年最好的 20 款免费 jQuery 插件 oschina 发布于: 2014年01月11日 (8评) 分享到  新浪微博腾讯微博 收藏+99 互联网上面有很多 jQuery 插件,这里我们 ...

  3. java.io.IOException: Illegal partition for 67 (-1)

    今天写MapReduce的分区进行排序的功能,自己写了一个Partitioner,然后用的时候就错了 public static class MyPartition extends Partition ...

  4. 简单的积雪shader

    // Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject' Shader "Custom/CoverSnow&q ...

  5. Unity Editor Inspector编辑模板

    效果图: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEdito ...

  6. PHP中foreach用法详细讲解

    1.foreach是什么? foreach是PHP的一种语法结构,其实就是一个工具,(工具:就是工作的时候用到的器具),那么在程序开发过程中,为了达到程序效果,就用到了foreach. 2.如何用? ...

  7. 更改eclipse(myeclipse) author的默认名字(注释的作者)

    在eclipse/myeclipse中,当添加注释的作者选项时,@author 后边一般都会默认填充的你登录计算机的用户名.如何去修改呢:第一种方法:修改计算机登录的用户名(一般不实用)第二种方法:修 ...

  8. Jmeter + Ant + Jenkins 接口/性能测试,持续集成环境搭建

    1. 安装Jmeter.jdk Jmeter 3.3版本 :<http://note.youdao.com/noteshare?id=5e3fd287db24d08386207a7de22d26 ...

  9. GCD(st表+二分)

    GCD Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

  10. [转]linux terminal中使用proxy

    转自:http://www.cnblogs.com/JoJosBizarreAdventure/p/5892383.html 在linux terminal中使用代理 方法一: terminal中输入 ...