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

ES聚合场景下部分结果数据未返回问题分析

经过查询发现有段描述: 就是只会返回top结果, 部分结果不响应返回 那如何让这部分结果返回呢? 带着问题, 发现使用桶聚合,默认会根据doc_count 降序排序,同时默认只返回10条聚合结果....AggregationBuilders.terms("group_by_topics") .field("topic").size(100); 我们解决了问题, 现在思考下ES为什么不一下子返回所有统计项的结果数据呢...es 出于效率和性能原因等,聚合的结果其实是不精确的.什么意思?...以我们上面遇到的场景为例: 默认返回top 10 聚合结果, 首先在各节点分片取自己的topic 10 返回给协调节点,然后协调节点进行汇总. 这样就会导致全量的实际聚合结果跟预期的不一致....总结 本文主要针对实际工作的应用问题,来排查解决ES聚合数据部分数据未展示问题, 同时对ES的聚合检索原理进行讲解 .在数据量大、聚合精度要求高、响应速度快的业务场景ES并不擅长.

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

    ES11屡试不爽的新特性,你用上了几个?

    同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回最先被reject失败状态的值 let p1 = new Promise((resolve, reject) => {...触发resolve或者reject,就直接返回该promise结果状态 const promise1 = new Promise((resolve, reject) => { setTimeout(..."two" 因为promise2返回结果比promise1快 有时候我们可能需要知道所有的结果做一些操作,并不关心其执行结果是否成功,在没有Promise.allSettled之前,我们需要自己实现...":"fulfilled","value":"a"}, // {"status":"fulfilled","value":"b"}] 返回结果里会将返回一个数组,包含了所有成功与失败的结果,数组每项为对象...9007199254740992 console.log(B) //9007199254740992 console.log(A === B) //true 当数据超出范围就会失去精度,达不到我们预期的结果

    55810

    ES11屡试不爽的新特性,你用上了几个?

    同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回最先被reject失败状态的值 let p1 = new Promise((resolve, reject) => {...resolve或者reject,就直接返回该promise结果状态 const promise1 = new Promise((resolve, reject) => { setTimeout(resolve...promise2返回结果比promise1快 有时候我们可能需要知道所有的结果做一些操作,并不关心其执行结果是否成功,在没有Promise.allSettled之前,我们需要自己实现,可通过如下实现Promise.allSettled...":"fulfilled","value":"a"}, // {"status":"fulfilled","value":"b"}] 返回结果里会将返回一个数组,包含了所有成功与失败的结果,数组每项为对象.../9007199254740992 console.log(B) //9007199254740992 console.log(A === B) //true 当数据超出范围就会失去精度,达不到我们预期的结果

    64342

    await 只在 async 函数中工作

    例如,上述代码中返回一个带有结果 1 的 resolved promise,我们可以进行测试: f().then(alert); // 1 …我们可以显式的返回一个 promise,结果相同: async...Await // 只在 async 函数中工作 let value = await promise; await 关键字使 JavaScript 等待,直到 promise 得到解决并返回其结果...这是一种比 promise.then 更优雅地获取 promise 结果的语法,它更容易阅读和编写。...async function showAvatar() { // 读取我们的 JSON let response = await fetch('/article/promise-chaining...await 的新手往往会忘记这一点,但我们不能在最顶层的代码中编写 await,因为它会无效: // 在顶层代码中导致语法错误 let response = await fetch('/article/promise-chaining

    1.5K10

    vue2项目中如何使用es2020

    标准规范发布; 1998年06月,Ecma 大会批准了第二版; 1999年12月,强大的正则表达式、更好的字符串处理、新的控制语句、try/catch 异常处理、更严格的错误定义、数字输出格式以及对未来语言增长预期的微小变化被引入标准...引入了一些新的内置函数 Array.prototype 上的 flat 和 flatMap 用于扁平化数组; Object.fromEntries 用于直接将 Object.entries 的返回值转换为新的...更新包括要求 Array.prototype.sort 是稳定的排序, 要求 JSON.stringify 无论输入如何都返回格式良好的 UTF-8,并通过要求它返回相应的原始源文本或标准占位符。...,一个新的不会短路的 Promise 组合器; globalThis,一种访问全局 this 值的通用方式; 专用导出 * as ns from 'module' 语法在模块中使用; 增加 for-in...ES2021,第 12 版引入了 用于字符串的 replaceAll 方法; Promise.any,一个 Promise 组合器,当输入值被满足时短路; AggregateError,一种新的

    1.9K20

    比较全面的Promise使用方式

    本质上 Promise 是一个函数返回的对象,我们可以在它上面绑定回调函数,这样我们就不需要在一开始把回调函数作为参数传入这个函数了。...Promise 很棒的一点就是链式调用(chaining) 链式调用 连续执行两个或者多个异步操作是一个常见的需求,在上一个操作执行成功之后,开始下一个的操作,并带着上一步操作所返回的结果。...catch(() => { console.log('执行「那个」'); }) .then(() => { console.log('执行「这个」,无论前面发生了什么'); }); 输出结果如下...单独的链也有单独的错误处理,导致未捕获的错误。 第二个错误是不必要地嵌套,实现第一个错误。嵌套还限制了内部错误处理程序的范围,如果是非预期的,可能会导致未捕获的错误。...这导致在大多数浏览器中不能终止的 Promise 链里的 rejection。 一个好的经验法则是总是返回或终止 Promise 链,并且一旦你得到一个新的 Promise,返回它。

    90720

    vue2项目中如何使用es2020

    标准规范发布; 1998年06月,Ecma 大会批准了第二版; 1999年12月,强大的正则表达式、更好的字符串处理、新的控制语句、try/catch 异常处理、更严格的错误定义、数字输出格式以及对未来语言增长预期的微小变化被引入标准...引入了一些新的内置函数 Array.prototype 上的 flat 和 flatMap 用于扁平化数组; Object.fromEntries 用于直接将 Object.entries 的返回值转换为新的...更新包括要求 Array.prototype.sort 是稳定的排序, 要求 JSON.stringify 无论输入如何都返回格式良好的 UTF-8,并通过要求它返回相应的原始源文本或标准占位符。...,一个新的不会短路的 Promise 组合器; globalThis,一种访问全局 this 值的通用方式; 专用导出 * as ns from 'module' 语法在模块中使用; 增加 for-in...ES2021,第 12 版引入了 用于字符串的 replaceAll 方法; Promise.any,一个 Promise 组合器,当输入值被满足时短路; AggregateError,一种新的

    1K10

    JavaScript ES11新特性

    导文 “ JavaScript ES11,也被称为ES2020,引入了一些新特性和语言改进 可选链操作符(Optional Chaining Operator) 可选链操作符 ?....可以用来提供默认值,当左侧的值为 null 或 undefined 时,使用右侧的值作为结果。 空值合并操作符 ?? 主要用于检查变量是否为 null 或 undefined,如果是,则返回默认值。...Promise.allSettled() 接收多个 Promise 对象,并返回一个新的 Promise,当所有的 Promise 完成(不管是成功还是失败)时才会被 resolve。...返回的结果是一个数组,每个元素包含原始 Promise 的状态和值。...Promise API,它接收一个 Promise 数组,并在所有 Promise 完成后返回一个新的 Promise,该 Promise 的值是一个包含每个 Promise 状态和结果的对象数组。

    19820

    JavaScript ES11新特性

    导文 JavaScript ES11,也被称为ES2020,引入了一些新特性和语言改进 可选链操作符(Optional Chaining Operator) 可选链操作符 ?....可以用来提供默认值,当左侧的值为 null 或 undefined 时,使用右侧的值作为结果。 空值合并操作符 ?? 主要用于检查变量是否为 null 或 undefined,如果是,则返回默认值。...Promise.allSettled() 接收多个 Promise 对象,并返回一个新的 Promise,当所有的 Promise 完成(不管是成功还是失败)时才会被 resolve。...返回的结果是一个数组,每个元素包含原始 Promise 的状态和值。...Promise API,它接收一个 Promise 数组,并在所有 Promise 完成后返回一个新的 Promise,该 Promise 的值是一个包含每个 Promise 状态和结果的对象数组。

    18810

    解决 JavaScript 中处理 null 和 undefined 的麻烦事

    以下是一些最常见的来源: 用户输入 数据库/网络记录 未初始化状态 函数什么也不会返回 User Input 用户输入 在处理用户输入时,对这些输入进行验证是第一道也是最好的防线。...异步与 Promise 如果某个函数可能没有返回值,那么最好将其包装在 Either 中。...如果你要创建一个可能会也可能不会产生结果的函数(尤其是可能有多个结果),则下面是一个很好的例子。...maybe2): ', maybeDouble(maybe2)); maybe 会使用一个后备值,然后是一个映射到 may 数组上的函数,然后是一个 may 数组(一个数组包含一个值,或者什么都不包含),然后返回将该函数应用于数组内容的结果...,或者返回数组为空时的值。

    1.3K20
    领券