首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

印象深刻的bug(es查询翻页相关+字段变更消息推送)

简单的分享下最近在测需求的时候遇到的两个问题: 1、es翻页的问题 现象: 有一个接口,查的是es的数据,es里面数据有很多,前面翻页翻个1-2页验证基本功能没有问题,翻到第51页的时候,pageSize...传200 去查数据的时候,查不到数据,实际上es里面满足条件的数据超过一万条。...至于es超过1万条之前的查询方式具体有什么问题,这里我就不去深究了。...2、变更字段消息推送问题 背景:今晚在测一个需求,针对指定的某几个字段,发生变更后,要发消息到某个topic里面,其中这个字段的变更,开发是通过flink发送的binlog消息去处理的,遇到的问题是:字段由空变为有值.../字段由有值变为空的时候,没有返回具体的字段名称,导致我们的业务处理出现一些预期之外的结果。

15110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ES 查询

    max_score字段就是相关度评分,当使用查询接口时没有指定排序字段,那么ES就会按照每条记录的评分进行排序.相关度评分中涉及到两种算法,会在后续的文章中进行介绍. 3、元数据 1中的demo查询结果集有一个...source PUT /logs { "mappings": { "_source": { "enabled": false } } } (2)、禁用source中的部分字段...*","Price","Desc"], "excludes": ["Name"] }, "query": { "match_all": {} } } 这里可以指定查询包含哪些字段和不包含哪些字段...注:ES默认会为所有的字段创建倒排索引,如果通过q=字段:字段值的形式进行搜索,ES会去指定字段的索引集合查找相关的值并返回. 4.4 all搜索 GET /logs/_search?...q=111 重点注意:ES默认会为所有的字段创建倒排索引,所以如4.3中一样,查询条件没有以q=字段:字段值的形式进行搜索,ES扫描所有建立了倒排索引的字段.所以这里的结果集如下: "hits"

    74210

    mongovue查询字段_mongodb查询速度

    age`) values (’starlee’,25) Mongo: db.user.insert({‘name’ : ’starlee’, ‘age’ : 25}) 如果你想在MySQL里添加一个字段...MongoDB的好处挺多的,比如多列索引,查询时可以用一些统计函数,支持多条件查询,但是目前多表查询是不支持的,可以想办法通过数据冗余来解决多表 查询的问题。...MongoDB对数据的操作很丰富,下面做一些举例说明,内容大部分来自官方文档,另外有部分为自己理解。...db.colls.find({ “field” : { $gte: value } } ); db.colls.find({ “field” : { $lte: value } } ); 也可对某一字段做范围查询...$size查询 db.colls.find( { a : { $size: 1 } } );//对对象的数量查询,此查询查询a的子对象数目为1的记录 $exists查询 db.colls.find

    2.4K20

    ES DSL查询

    1、Query String Search 参考前面的文章 2、全文检索 ES中全文检索的方式分为以下几种: (1)、match语法 GET /logs/_search { "query": {..."match": { "Name": "apple watch" } } } 当向ES插入数据时,如果采用默认设置,且设置了倒排索引,那么对应的字符串会被分词并建立倒排表....且到使用match进行匹配时,如上代码,匹配的是logs索引的Name字段,其值也会被分词,然后去倒排表检索,返回结果集.那么logs索引中Name字段包含apple和watch分词的document...在对Desc字段进行分词的同时,并不会对Keyword进行分词,但是超过当前字段内容如果大于256则会进行内容截取.那么就可以通过keyword和term进行内容的精准匹配了代码如下: GET /logs...Price字段值在100和112范围之间的document记录.

    67330

    ES系列六、ES字段类型及ES内置analyzer分析

    一、背景知识 在Es中,字段的类型很关键: 在索引的时候,如果字段第一次出现,会自动识别某个类型,这种规则之前已经讲过了。 那么如果一个字段已经存在了,并且设置为某个类型。...二、字段中的索引和存储 其中需要说明的是: 1、index定义字段的分析类型以及检索方式 如果是no,则无法通过检索查询到该字段; 如果设置为not_analyzed则会将整个字段存储为关键词...,常用于汉字短语、邮箱等复杂的字符串; 如果设置为analyzed则将会通过默认的standard分析器进行分析 2、store定义了字段是否存储 在《ES IN ACTION》中有这样一段描述...意思是,在ES中原始的文本会存储在_source里面(除非你关闭了它)。默认情况下其他提取出来的字段都不是独立存储的,是从_source里面提取出来的。...如果想做类似于sql中的like查询,可定义为keyword并使用通配符wildcard方式查询

    2.5K21

    ES 聚合查询

    ES聚合查询主要又三种模式,分别是分桶聚合(Bucket aggregations)、指标聚合(Metrics aggregations)、管道聚合(Pipeline aggregations),三种模式处理的业务场景不同... 图中首先按照手机的品牌进行分桶统计数量,接着在小米手机的分桶基础上,再按照小米手机的档次进行二次分桶(分桶的嵌套查询)统计数量...."aggs": { "tags_aggs": { "terms": { "field": "Tags.keyword", //一般情况下,带有keyword的类型的字段才能进行聚合查询...不会为其创建正排索引,但是带有keyword类型的text类型,es会为其创建倒排索引的同时创建正派索引(但是此时的keyword正排索引会有长度限制通过ignore_above去配置)。...es中一般只有正排索引才能进行聚合查询 (2)、一般情况下,不会对text字段创建正排索引,应为对大文本字段创建正排索引没有什么意义,而且正排索引会创建磁盘文件,浪费资源和空间. (3)、通过fielddata

    1.5K30

    ES 复合查询

    ES查询过程中比较多遇到符合查询,既需要多个字段过滤也需要特殊情况处理,本文简单介绍几种查询组合方便快捷查询ES。...一个 bool 过滤器由三部分组成: { "bool" : { "must" : [], "should" : [], "must_not" : [...查询 filter查询只过滤符合条件的文档,es会有只能缓存,因此其执行效率很高,做简单的匹配查询且不考虑算分是,推荐使用filter替代query 上下文类型 执行类型 使用方式 Query 查找和查询语句最匹配的文档...5.filter大部分情况下来说,在query之前执行,先尽量过滤掉尽可能多的数据 6.如果document有新增或修改,那么cached bitset会被自动更新 7.以后只要是有相同的filter...="7ec0e0e5-a4b0-46d7-af56-5b3eab477aea" es: GET blog/paper/_search { "query": { "bool": {

    5.3K40

    理解 ES 查询机制

    非结构化数据通常占用更多的存储空间,约占企业数据的 80% 左右,比较难以管理 图片 2,结构化搜索 vs 全文搜索 结构化搜索: 通常查询具有固有结构的数据,答案要么是肯定的,要么是否定的(即便是类似正则匹配这样的结构化搜索...,正则表达式匹配数据也是确定的),数据要么属于查询结果集合,要么不属于。...全文搜索: 通常查询全文字段/文档的所有内容,答案返回的是一系列可能的数据,数据有一定概率属于结果集合。...当然 ES 不仅可以进行全文搜索,也可以进行一部分的结构化搜索,更加扩大了他的应用范围。对于数据量巨大的情景,有公司会使用 ES 代替传统的 MySQL 管理数据。...2,ES 与 Lucene ES 底层基于 Lucene 开发,Lucene作为其核心来实现索引和搜索的功能。我们虽然讲的是 ES,但很大一部分内容是 Lucene 的实现。​

    1.5K72

    ES-DSL查询

    :根据精确词条值查找数据,一般是查找keyword,数值,boolean等字段 ids range Term 地理查询:根据经纬度查询 Geo_distance Get_bounding_box 复合查询.../_search { "query": { "match": { "FIELD": "TEXT" } } } multi_match:与match查询类似,只不过允许同时查询多个字段...Multi_match根据多个字段查询,参与查询字段越多,查询性能越差,多字段建议使用all的方式 精确查询 精确查询一般是查找keyword、数值、日期、boolean等类型字段,所以不会对搜索条件分词...,在分布式系统中就会出现问题 集群es中的数据是分片存储在不同的es机器上的,假如集群中有100台机器查询数据为from=990,size=10,es就会从不同的es机器上分别查找1000条数据,然后聚合重排序后返回...,默认情况下搜索字段需要与高亮字段匹配 "require_field_match": "false", //高亮字段 "fields": { "name": {},

    82320
    领券