当前位置: 首页 > 面试题库 >

在ElasticSearch 5聚合中最适合使用的数据类型是什么:数字或关键字?

宦高岑
2023-03-14
问题内容

在Elasticsearch索引中,我有几个字段正在引用主要类别的ID(例如,sector_id,country_id等)。

这些字段仅用于过滤(使用术语过滤器)和用于创建术语聚合的存储桶(以及其他)。

当前,它们中的每一个都使用最小的适当数字数据类型(例如,byte,short等)。

这是用于重型聚合的最佳数据类型吗?

还是应该使用关键字数据类型?

在此先感谢您的任何建议!


问题答案:

如果这些字段的值是数字,则应使用数字类型,如果它们是字符串,则应使用关键字类型。

要记住的一件事是,如果您想在某个时候在这些字段上运行range查询和/或range聚合,则应该优先使用数字类型,以便可以对这些值进行数字排序而不是按词法排序。

例如:如果您有国家ID(例如1、2、3,…,10、11、12,…,20,…)并且映射为关键字(即字符串),则如果您运行range使用对其进行查询(或聚合)from: 1, to: 3,您还将得到11、12、13等,因为在字符串世界中,11在词法上小于3。



 类似资料:
  • 问题内容: 什么时候需要在Java中使用关键字。我知道您在创建这样的对象实例时应该使用它: 有时在代码中,我注意到没有使用它,我感到困惑。在这一行代码中: 为什么不这样创建AssetManager的实例: 然后将其设置为等于getAssests()? 什么时候应该使用? 谢谢! 问题答案: 首次明确创建对象时,请使用new关键字。然后,不需要使用新的getter方法获取对象,因为该对象已存在于内存

  • 我想知道用类型化语言(如Haskell或Idris)表达智能合约的最佳方式是什么(例如,您可以编译它以在以太坊网络上运行)。我主要关心的是:什么类型可以捕获合同所能做的一切? 一个简单的解决方案是将协定定义为类型的成员。这种类型类似于Haskell的,但它不支持系统调用,而是包括区块链调用,即,它将支持从区块链状态读取和写入区块链状态、调用其他契约、获取块数据等。 这显然足以执行任何合同,但是:

  • 问题内容: 当从Coldfusion 8连接到MS SQL 2008数据源时,对于设置为“ uniqueidentifier”的SQL列,我应该使用哪种Coldfusion cfsqltype。 谢谢! 问题答案: CF_SQL_CHAR或CF_SQL_IDSTAMP 参见:http : //livedocs.adobe.com/coldfusion/8/htmldocs/Tags_p- q_18

  • 问题内容: 我想从以下带有列,的数据框中创建数据透视表。数据透视表显示,但不显示。当我只用尝试时,我得到了错误。如何解决此问题,使我同时看到数字字段和字段(字符串) 问题答案: 您可以使用和: 产量 或者,与配合使用: 产量 使用, 通过获取找到的第一个值对每个或组进行聚合。在您的情况下,似乎没有重复项,因此第一个值与唯一的值相同。

  • 我试图关闭数据库连接。但是有了一点困惑,说 我是否必须靠近它 或者 这两者之间有什么区别?

  • 问题内容: 我试图关闭数据库连接,但是有点困惑 我是否必须靠近它 要么 两者之间有什么区别? 问题答案: 这些方法只能关闭。您仍然必须关闭全部和实例。我建议这样做。就像是, 如果您使用我的实用程序,则finally块可能是,