ES查询常见问题

1 must嵌套should条件查询

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然后按照某属性的最大值排序
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的字符串
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代替。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

Java虚拟机体系结构,你知道吗?

众所周知,Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操...

1011
来自专栏GreenLeaves

Flyweight享元模式(结构型模式)

虽然OOP能很好的解决系统抽象的问题,并且在大多数的情况下,也不会损失系统的性能。但是在某些特殊的业务下,由于对象的数量太多,采用面向对象会给系统带来难以承受的...

1082
来自专栏个人随笔

论 Java 的访问权限

Java中成员访问权限 Java中的访问权限控制符有四个: 作用域_____当前类____同一package___子孙类____其他package publi...

3928
来自专栏LIN_ZONE

Shell编程基础

请参考:菜鸟教程参数传递 在执行脚本的时候可以向脚本传递参数,脚本获取参数的格式为:$n

752
来自专栏Python入门

30个Python程序员需要知道的编程技巧,可以让你的工作事半功倍!

在上面代码中,赋值的右侧形成了一个新元组,而左侧则立刻将该(未被引用的)元组解包到名称<a>和<b>。

740
来自专栏JAVA技术站

JFinal一行代码搞定增删改,要的就是快 原

首先需要重写getModel方法,但是这有个问题,重写之后的方法和getModel的参数有点冲突,所以选择不重写,另外写个方法占且叫getBaseModel吧,...

741
来自专栏java一日一条

Java虚拟机体系结构,你知道吗?

众所周知,Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操...

812
来自专栏程序员的SOD蜜

实例探究字符编码:unicode,utf-8,default,gb2312 的区别

 最近做邮件收发,不同的邮件系统间可能会出现编码问题,迫使我重新回来研究一下字符的编码问题,unicode,utf-8,gb2312这些编码格式都是我们熟知的,...

24410
来自专栏QQ音乐技术团队的专栏

谁创建谁销毁,谁分配谁释放——JNI调用时的内存管理

在QQ音乐AndroidTV端的Cocos版本的开发过程中,我们希望尽量多的复用现有的业务逻辑,避免重复制造轮子。因此,我们使用了大量的JNI调用,来实现Jav...

4606
来自专栏Linyb极客之路

深入理解和探究Java类加载机制

java.lang.ClassLoader类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个Java 类,即 ...

1103

扫码关注云+社区

领取腾讯云代金券