DSL:

  query_string

  match

  match_phrase

match_phrase_prefix

  multi_match

   simple_query_string

  term

  terms

  bool(must,should,must_not)

  match

  filter

多索引查询

  主要参数说明

  聚合aggs

query:

  query主要是将要查询的内容进行内部分词后匹配然后获取 or的结果。比如:query “中国人民” 则会查询 内容中有“中”“国”“人”“民”“中国”“人民”“国人”“中国人”“中国人民”

  在查询中可使用 OR  或关联 AND 并关联   \***\进行模糊匹配

  "query": "kill OR a"      "query": "kill AND a"     "query": "\"bird\""

  注意查询的单词一律用小写,不能用大写,大写内容有特殊含义

query_string 最基本的查询:

全文检索:

POST http://192.168.201.105:9200/_search
{"query":
{"query_string": {
"query": "kill"
}}
}

fields指定属性内检索

POST http://192.168.201.105:9200/_search
{"query":
{"query_string": {
"fields": [
"title"
],
"query": "kill"
}}
}

match 匹配查询:

"match" : {[filed] :[text]}

POST http://192.168.201.105:9200/_search
{"query":
{"match": {
"title": "kill"
}}
}

match 的text中还可以这样写:

POST http://192.168.201.105:9200/_search
{"query":
{"match": {
"title": {
"query": "bird"
}
}}
}

match_phrase 短句查询:

POST http://192.168.201.105:9200/_search
{"query":
{"match_phrase": {
"title": "to kill a"
}}
}

match_phrase_prefix 短句最后不完全字符查询,也就是我们有时知道前缀的模糊查询:

POST http://192.168.201.105:9200/_search
{"query":
{"match_phrase_prefix": {
"title": "to ki"
}}
}

multi_match 多复合查询:

多个可能的值以空格隔开以下就为 title中为 kill 或者 bill的内容。

POST http://192.168.201.105:9200/_search
{"query":
{"multi_match": {
"query": "kill Bill",
"fields": ["title"]
}}
}
如果我们想要对检索的内容进行分级显示:
就要添加type: "best_fields" 以完全匹配最高,
    type: "most_fields" 以最多匹配最高
    type: "cross_fields" 分词在不同的属性里 simple_query_string 简单query查询:
POST http://192.168.201.105:9200/_search
{"query":
{"simple_query_string": {
"query": "kill Bill",
"fields": ["title"]
}}
}

term 不分词查询:

  即如果现在有中国人则 term会完全在分词上去查找“中国人”这个分词,而不会去理会中国,或国人。

post _search
{
"query": {
"term": {
"content": {
"value": "中国人"
}
}
}
}

terms 也是不分词查询,但是支持多个结果以或的形式存在。

post _search
{
"query": {
"terms": {
"content": [
"中国人",
"中国"
]
}
}
}

bool查询(must,should,must_not,filter)

bool可实现联合查询,must必须存在,should可能存在,must_not 一定不存在

must:

post /myindex/_search
{
"query": {
"bool": {
"must": [
{"term": {"title1": "世界"}},
{"term": {"content": "中国"}}
]
}
}
}

should:

post /myindex/_search
{
"query": {
"bool": {
"should": [
{"term": {"title1": "world"}},
{"term": {"content": "中国"}}
]
}
}
}

must_not:

post /myindex/_search
{
"query": {
"bool": {
"must_not": [
{"term": {"title1": "world"}}
]
}
}
}

match:

post /myindex/_search
{
"query": {
"bool": {
"must": [
{"match": {"title1": "world"}}
]
}
}
}

filter:

post /myindex/_search
{
"query": {
"bool": {
"must": [
{"match": {"title1": "world"}}
],
"filter":[
{"match": {"content": "china"}},
           {"range":{"title":{"gte":"2018-7-1"}}}
]
}
}
}

多索引查询:

当我们想对多个索引下的内容进行查询时

>post  http://ip:port/index1,index2,index3,...../_search     // 检索index1,index2,index3...索引下的数据

>post  http://ip:port/_search                                              //检索所有

>post http://ip:port/_all/_search                                        //检索所有

还可以使用通配符的形式  (*)模糊匹配,(+)另外包括, (-)排除掉

>post http://ip:port/*index,-myindex,+mytest/_search     //匹配所有以index结尾,排除掉myindex,包括mytest

日期索引格式的数字支持,先不记录,后面用到再写。

在匹配中有可能所要查找的索引不存在而引发查询报错。为此,需要加参数忽略索引不存在的情况:

主要参数说明:

?ignore_unavailable=true   //运行索引不存在

allow_no_indices=true     //允许带通配符索引不存在

expand_wildcards=true              //允许通配符索引在关闭的情况下访问不报错

human = true                               // 将输出的结果适合于人阅读,数字会进行人为化,比如2000,变为2k

pretty = true                               //结果美化,便于查看

version = [versionNo]           //版本控制

op_type = [create]       //限制操作类型,即此处只允许新建,如果已经存在则不插入也不更新,防止对数据冲击

parent = [id]           // 定义父文档的id,约束查询范围

timeout = [3m]           // 默认是1m(分钟),可修改时间

fields = [fieldName],[att1]     // 指定要输出的json对象的属性

q = [fieldName]:[value]       // 快速属性值查找

sort=fieldName:asc                             // 排序

size=15                                                //默认是10

aggs 聚合

如同sql一样,可以对查询的结果进行聚合

 有平均avg,最大max,最小min,但这些聚合用于数字类型

聚合东西比较多,用到的时候再说吧。

post /myindex/_search
{
"aggs" : {
"avg_grade" : { "avg" : { "field" : "age" } }
}
}

elasticSearch-DSL的更多相关文章

  1. Elasticsearch DSL中Query与Filter的不同

    Elasticsearch支持很多查询方式,其中一种就是DSL,它是把请求写在JSON里面,然后进行相关的查询. 举个DSL例子 GET _search { "query": { ...

  2. [elk]elasticsearch dsl语句

    例子1 统计1,有唱歌兴趣的 2,按年龄分组 3,求每组平均年龄 4,按平均年龄降序排序 sql转为dsl例子 # 每种型号车的颜色数 > 1的 SELECT model,COUNT(DISTI ...

  3. elasticsearch DSL查询

    总结一个DSL的用法吧,语法网上查去,只记录一点心得,也是研究了半天,太麻烦了 先附上python代码 #!/usr/bin/env python # _*_ coding:utf-8 _*_ fro ...

  4. Elasticsearch DSL 常用语法介绍

    课程环境 CentOS 7.3 x64 JDK 版本:1.8(最低要求),主推:JDK 1.8.0_121 Elasticsearch 版本:5.2.0 相关软件包百度云下载地址(密码:0yzd):h ...

  5. ElasticSearch DSL 查询

    公号:码农充电站pro 主页:https://codeshellme.github.io DSL(Domain Specific Language)查询也叫做 Request Body 查询,它比 U ...

  6. Elasticsearch DSL语句之连接查询

    传统数据库支持的full join(全连接)查询方式. 这种方式在Elasticsearch中使用时非常昂贵的.因此,Elasticsearch提供两种操作可以支持水平扩展 更多内容请参考Elasti ...

  7. ES 20 - 查询Elasticsearch中的数据 (基于DSL查询, 包括查询校验match + bool + term)

    目录 1 什么是DSL 2 DSL校验 - 定位不合法的查询语句 3 match query的使用 3.1 简单功能示例 3.1.1 查询所有文档 3.1.2 查询满足一定条件的文档 3.1.3 分页 ...

  8. ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解

    前言 在上一篇中介绍了ElasticSearch集群和kinaba的安装教程,本篇文章就来讲解下 ElasticSearch的DSL语句使用. ElasticSearch DSL 介绍 Elastic ...

  9. Elasticsearch+Logstash+Kibana教程

    参考资料 累了就听会歌吧! Elasticsearch中文参考文档 Elasticsearch官方文档 Elasticsearch 其他——那些年遇到的坑 Elasticsearch 管理文档 Ela ...

  10. ElasticSearch大数据分布式弹性搜索引擎使用

    阅读目录: 背景 安装 查找.下载rpm包 .执行rpm包安装 配置elasticsearch专属账户和组 设置elasticsearch文件所有者 切换到elasticsearch专属账户测试能否成 ...

随机推荐

  1. 将 GitHub 的某人的特定仓库复制到自己的账户下 的方法

    访问仓库页面,点击 Fork 按钮创建自己的仓库 Fork 就是将 GitHub 的某个特定仓库复制到自己的账户下. Fork 出的仓库与原仓库是两个不同的仓库,开发者可以随意编辑. 新建的仓库名为& ...

  2. 网站首页多URL可访问,如何集中首页网站权重?

    原文地址:http://ask.seowhy.com/question/8573 百度站长平台Lee在文章<建立符合搜索引擎抓取习惯>一文中提出:唯一性网站中同一内容页只与唯一一个url相 ...

  3. VLAN IEEE802.1Q

    一. VLAN产生原因-广播风暴 传统的局域网使用的是HUB,HUB只有一根总线,一根总线就是一个冲突域.所以传统的局域网是一个扁平的网络,一个局域网属于同一个冲突域.任何一台主机发出的报文都会被同一 ...

  4. [UE4]蓝图比C++慢10倍,是吗?

    首先,蓝图肯定是比C++慢. 任何脚本语言(需要解释执行的语言),和C++相比可能达到十倍甚至百倍的差距.比如Java.Python.Lua,JS. 脚本语言是运行在虚拟机上的,所以它们比起直接运行的 ...

  5. vue-生存周期

    beforeCreate   实例初始化之后 created           实例创建之后 beforeMount   实例挂载前    文本节点 mounted        渲染实例 防止花括 ...

  6. delphi WebBrowser的使用方法详解(六)

    通篇引用mshtml; 一.webbrowser获取滚动条的位置 function GetScrollPositionX(FWB:TEmbeddedWB):Integer;     //水平滚动条位置 ...

  7. centos6.2 安装Mysql5.6

    1. mysql官网下载rpm包 [root@slave2 home]# ls hbase  hive  mysql  mysql57-community-release-el6-11.noarch. ...

  8. php数组和部分操作函数

    1. 数组定义 数组的定义使用 array()方式定义,可以定义空数组: <?php $number = array(1,3,5,7,9); //定义空数组 $result = array(); ...

  9. raid1与raid5

    raid 1 就是两个磁盘同时读同时写, 当其中一个坏了 不影响使用, 直接更换一个,这样磁盘的容量只有一个盘的raid 5 就是 N-1个磁盘的容量,当其中任何一个磁盘坏,不影响使用,更换一个就可以 ...

  10. 最全spring boot视频系列,你值得拥有

    ================================== 从零开始学Spring Boot视频 ================================== àSpringBoot ...