Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ES查询常见问题

ES查询常见问题

作者头像
YG
发布于 2018-05-23 09:14:19
发布于 2018-05-23 09:14:19
76900
代码可运行
举报
文章被收录于专栏:YG小书屋YG小书屋
运行总次数:0
代码可运行

1 must嵌套should条件查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -XGET 'xxx/xxx/_search?pretty' -H 'Content-Type: application/json' -d'{
    "size": 0,
    "query": {
        "bool": {
            "must": [
                {
                    "range": {
                        "uisendtime": {
                            "gte": 1506535200,
                            "lte": 1506607200
                        }
                    }
                },
                {
                    "bool": {
                        "should": [
                            {
                                "match_phrase": {
                                    "strtitle.infosec": "两清"
                                }
                            },
                            {
                                "match_phrase": {
                                    "strdescription.infosec": "两清"
                                }
                            }
                        ]
                    }
                }
            ]
        }
    }
}'

注意: 1)如果must或者should中用到多个条件,每个条件必须用大括号括起来,嵌套的bool查询必须从新指定bool

2 先过来后聚合,然后对聚合出的数据求top然后按照某属性的最大值排序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -XGET 'http://xxx/xxx/_search?pretty' -d '
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "strcommocrtxtcont": {
                            "query": "福利",
                            "type": "phrase"
                        }
                    }
                }
            ]
        }
    },
    "aggs": {
        "md5_distinct_count": {
            "cardinality": {
                "field": "strpicdownloadimgmd5"
            }
        },
        "top_tags": {
            "terms": {
                "field": "strpicdownloadimgmd5",
                "order": {
                    "max_uisendtime": "desc"
                },
                "size": 10
            },
            "aggs": {
                "top_url_hits": {
                    "top_hits": {
                        "sort": [
                            {
                                "_score": {
                                    "order": "desc"
                                }
                            }
                        ],
                        "size": 1
                    }
                },
                "max_uisendtime": {
                    "max": {
                        "field": "uisendtime"
                    }
                }
            }
        }
    },
    "size": 0
}'

注意:top_tags的属性strpicdownloadimgmd5是按照max_uisendtime排序的,而max_uisendtime(求出top_hits中uisendtime的最大值)是你自己在一个聚合中定义的。

3 查出的数据中过滤长度为0的字符串
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl xxx/xxx/_search?pretty -d'{
    "size": 5,
    "_source": [
        "strdescription",
        "uisendtime",
        "strtitle"
    ],
    "query": {
        "bool": {
            "must": [
                {
                    "bool": {
                        "should": [
                            {
                                "match_phrase": {
                                    "strtitle": "\u738b\u8005"
                                }
                            },
                            {
                                "match_phrase": {
                                    "strtitle": "\u8363\u8000"
                                }
                            }
                        ]
                    }
                }
            ],
            "must_not": [
                {
                    "script": {
                        "script": {
                            "inline": "params._source.strdescription.length() < 1"
                        }
                    }
                }
            ]
        }
    }
}'

注意:params._source.strdescription.length() < 1 可用 d oc[\u0027strdescription\u0027].length()<1 或者doc['''strdescription''']<1代替。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.11.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ES 查询优化(一)
1、能用term就不用match_phrase The Lucene nightly benchmarks show that a simple term query is about 10 times as fast as a phrase query, and about 20 times as fast as a proximity query (a phrase query with slop). term查询比match_phrase性能要快10倍,比带slop的match_phrase快2
YG
2018/05/23
5K1
Elasticsearch安装使用教程
Elasticsearch是一个全文搜索引擎。安装Elasticsearch时需要先安装Java。 wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.2.zip unzip elasticsearch-1.4.2.zip cd elasticsearch-1.4.2 ./bin/elasticsearch
星哥玩云
2022/07/04
4090
Elasticsearch安装使用教程
ElasticSearch 索引查询使用指南——详细版
  绿色表示一切正常, 黄色表示所有的数据可用但是部分副本还没有分配,红色表示部分数据因为某些原因不可用.
双面人
2019/04/10
3.7K0
ElasticSearch 索引查询使用指南——详细版
ElasticSearch学习(二)——索引、文档简单操作
在Postman中发PUT请求:http://127.0.0.1:9200/index_name
传说之下的花儿
2023/04/16
5490
ElasticSearch学习(二)——索引、文档简单操作
Elasticsearch学习搜索的笔记
1.普通查询(全文搜索) 查询name=Smith的文档数据 GET /megacorp/employee/_search { "query" : { "match" : { "name" : "smith" } } } 备注: 返回结果当中存在max_score和每个记录当中的_score表示最大相关性分数和该记录的相关性分数 2.组合查询 查询name=smith并且年龄大于30岁 GET /megacorp/employee/_
苦咖啡
2018/04/28
5900
Elasticsearch 数据搜索篇 转
这种方式会把查询的内容放入body中,会造成一定的开销,但是易于理解。在平时的练习中,推荐这种方式。
双面人
2019/04/10
6350
Elasticsearch 数据搜索篇
                                                                            转
触类旁通Elasticsearch:搜索
ES的搜索请求执行流程如图1所示。图中索引包含两个分片,每个分片有一个副本分片。在给文档定位和评分后,缺省只会获取排名前10的文档。REST API搜索请求被发送到所连接的节点,该节点根据要查询的索引,将这个请求依次发送到所有的相关分片(主分片或者副本分片)。从所有分片收集到足够的排序和排名信息后,只有包含所需文档的分片被要求返回相关内容。这种搜索路由的行为是可配置的,图1展示的默认行为,称为查询后获取(query_then_fetch)。
用户1148526
2019/05/25
3.3K0
ElasticSearch核心知识总结(一)es的六种搜索方式和数据分析
GET /ecommerce/product/_search { "query": { "match": { "name": "yagao" //查询包含单词 } }, "_source": ["name","price"],//不写查询所有字段 "sort": [ { "price": { "order": "desc"//倒序排序 } } ], "from": 0,//分页 "size": 1 }
老梁
2019/09/10
2.4K0
【ES三周年】02-索引操作
在Postman中发PUT请求:http://127.0.0.1:9200/index_name
传说之下的花儿
2023/04/11
6240
【ES三周年】02-索引操作
Elasticsearch - 聚合获取原始数据并分页&排序&模糊查询
在 Elasticsearch 中,cardinality 算法用来计算字段的基数(不重复的值的个数).
小小工匠
2023/05/12
1.4K0
Elasticsearch - 聚合获取原始数据并分页&排序&模糊查询
Elasticsearch 数据搜索篇·【入门级干货】
ES即简单又复杂,你可以快速的实现全文检索,又需要了解复杂的REST API。本篇就通过一些简单的搜索命令,帮助你理解ES的相关应用。虽然不能让你理解ES的原理设计,但是可以帮助你理解ES,探寻更多的特性。 其他相关的内容参考:Elasticsearch官方文档翻译 样例数据 为了更好的使用和理解ES,没有点样例数据还是不好模拟的。这里提供了一份官网上的数据,accounts.json。如果需要的话,也可以去这个网址玩玩,它可以帮助你自定义写随机的JSON数据。 首先开启你的ES,然后执行下面的命令
用户1154259
2018/01/17
9560
干货 | Elasticsearch Nested 数组大小求解,一网打尽!
https://www.elastic.co/guide/en/elasticsearch/reference/8.0/query-dsl-nested-query.html
铭毅天下
2022/04/06
1.7K3
干货 | Elasticsearch Nested 数组大小求解,一网打尽!
ES高级查询
Filter:在查询过程中,Filter只判断该文档是否满足条件,只有YES或者NO。 ES会对它的结果进行缓存,所以相较于Query而言Filter的速度会更快一些。
付威
2020/01/21
1.6K0
ES服务 聚合查询之Metric聚合详解
上面的汇总计算了所有文档的成绩统计信息。聚合类型为extended_stats,并且字段设置定义将在其上计算统计信息的文档的数字字段。
Linux运维技术之路
2024/03/07
2770
ES服务 聚合查询之Metric聚合详解
es各种查询
1、GET /lib/user/_search : 查询lib索引下的user类型的全部数据
爱撒谎的男孩
2019/12/31
6.9K0
ES脚本查询空字符串
本文介绍的查询方法是基于ES5.2版本的,可能对其他版本不适用。其他版本请参考官网: https://www.elastic.co/guide/en/elasticsearch/reference/5.2/modules-scripting-fields.html https://www.elastic.co/guide/en/elasticsearch/reference/5.2/modules-scripting-painless-syntax.html 查询字段为空的文档 curl localho
YG
2018/05/23
3.2K0
ElasticSearch基础入门学习笔记
本笔记的内容主要是在从0开始学习ElasticSearch中,按照官方文档以及自己的一些测试的过程。
Ryan-Miao
2020/02/24
5570
Elasticsearch初检索及高级
PUT customer/external/1 :在 customer 索引下的 external 类型下保存 1号数据
乐心湖
2021/01/18
1.1K0
Elasticsearch初检索及高级
ES的常用查询与聚合
基于es 5.4和es 5.6,列举的是个人工作中经常用到的查询(只是工作中使用的是Java API),如果需要看完整的,可以参考官方相关文档 https://www.elastic.co/guide/en/elasticsearch/reference/5.4/search.html。
阿泽
2019/09/24
6.5K0
ES的常用查询与聚合
干货 | 拆解一个 Elasticsearch Nested 类型复杂查询问题
前置说明:本文是线上环境的实战问题拆解,涉及复杂 DSL,看着会很长,但强烈建议您耐心读完。
铭毅天下
2021/07/22
3.1K0
相关推荐
ES 查询优化(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验