elasticsearch有复合索引吗?

2024-02-12

我想知道elasticsearch是否需要预先定义复合索引。通过复合索引,我的意思是类似于 mongodb 的东西。

db.collection.ensureIndex( { 字段1: 1, 字段2: 1, 字段3: 1 } )

或者类似于 mysql db 的东西。

在 mytable(field1, field2, field3) 上创建索引 adhoc_index;

所以我处理的数据非常扁平(大部分只是csv格式)。它看起来像下面这样(为了完整性)。

字段 1、字段 2、...、字段 N

字段的数量是任意的。一个数据集可能有 10 个字段,另一个有 20 个字段,另一个有 1000 个字段。我基本上将每一行转换为如下所示的 JSON 文档。

{
 "field1" : "value1",
 "field2" : "value2",
 ...
 "fieldN" : "valueN"
}

将 A、B 和 C 表示为字段的三个互斥子集:{field1, field2, ..., fieldN}。在任何给定时间,我都必须构建一个动态查询来过滤 A=a、B=b 和 C=c 的记录。

例如,

  • A = {字段1},B = {字段2,字段3},C = {字段6}
  • A = {字段2},B = {字段1},C = {字段1000,字段50}

所以我的elasticsearch DSL查询可能看起来像下面这样(我自己不确定这是否正确,但只是为了说明)。

"bool" : {
 "must" : [
  {"term" : { "field1" : "val1" },
  {"term" : { "field2" : "val2" },
  {"term" : { "field3" : "val3" },
  {"term" : { "field4" : "val4" }
 ]
}

基本上,这个查询说,“给我所有包含 field1=val1、field2=val2、field3=val3、field4=val4 的文档”。

我之所以问这个关于elasticsearch的问题是因为我在互联网上搜索复合索引时找不到明确的答案。他们还需要吗?

我也在评估 mongodb 和 mysql,我认为它们不能很好地适应我的情况,因为这些复合/复合索引必须先验定义,并且直到运行时我才会获得该信息字段需要一起建立索引以优化查询速度。当然,使用mysql,一旦我找出哪组字段需要一起索引(以及按什么顺序),我可以返回创建索引,但如果数据集很大(数据集的数量),这可能需要很长时间行数 > 100 万)。

我是否可以通过弹性搜索直接获得这个复合索引功能?意思是,我什至不必接触索引映射文件/定义?


ElasticSearch 没有复合索引,但它在查询多个索引并将它们相交(相交位向量 FTW)方面非常高效。

大多数时候,不需要复合索引,即使对于您提到的查询 4 ​​个不同字段的情况也是如此。 ElasticSearch 会愉快地查询 4 ​​个不同的索引,然后以有效的方式对结果进行交叉。根据我的经验,在类似情况下,它的性能可以与 MongoDB 相媲美并超越。

如果绝对必须有复合索引,则可以考虑对辅助字段建立索引,该字段的值是要索引的值的复合。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

elasticsearch有复合索引吗? 的相关文章

随机推荐

  • SQL:从两个表中选择相似的列

    我有一个包含两个表的数据库 Table1 and Table2 他们都有一个共同的专栏 ColumnA 这是一个nvarchar 如何从两个表中选择此列并将其作为结果集中的单个列返回 所以我正在寻找类似的东西 ColumnA in Tabl
  • 不同时区的同一日期

    我的问题是如何在不同时区获得相同的日 月 年 小时 分钟 秒 例如 var now moment valueOf var result1 moment now format DD MM YYYY HH mm SS Z 在我的时区 我得到这样
  • 在 Flutter 中实现双向列表视图

    Flutter中如何实现双向滚动视图 ListView 有一个scrollDirection 字段 但它只能采用Axis horizo ntal 或Axis vertical 有可能两者兼得吗 这是使用外部的潜在解决方案SingleChil
  • 如何将命令的输出重定向到环境变量中定义名称的文件?

    我想将文件夹下存在的所有文件的绝对路径存储到文本文件中 比方说temp txt 我正在使用此命令来执行此任务 dir s b a d gt D my work temp txt 当我重定向到硬编码到批处理文件中的文件名时 上述命令工作正常
  • 高效地将两个整数 x 和 y 转换为浮点数 x.y

    给定两个整数 X 和 Y 在 C 中将它们转换为 X Y 浮点值的最有效方法是什么 E g X 3 Y 1415 gt 3 1415 X 2 Y 12 gt 2 12 以下是我的机器上的一些鸡尾酒餐巾基准测试结果 适用于将两个ints to
  • AngularJS:单击时更改字体真棒图标颜色和背景

    我是 angularJS 的新手 我想要的是 我有一些社交链接图标和文本框 默认情况下linkedin图标被选中 当我点击 facebook 图标时 它的颜色应该更改为蓝色背景 带有 facebook 链接的文本框也应该更改 linkedi
  • 用于检测用户是否单击 XFBML 页面中的“喜欢”按钮的事件处理

    我有一个 Facebook 连接应用程序 画布 IFrame 应用程序 其中有一个Like控制粉丝专页 我想检测用户何时单击Like按钮能够显示附加信息 折扣优惠券代码 我用的是最新的JavaScript API http develope
  • PouchDb - 删除文档内的对象

    我是一名意大利 PouchDb 和 AngularJS 开发人员 我的 json 文档是 id 6 rev 3 f7283d7683cd6fb15753f494aad1d49f name Ivrea owners owner id 1 na
  • angular.forEach 和对象

    问题 我正在做 我认为是但也许不是 一个简单的angular forEach在数组上然后使用 resource根据返回的每个值进行调用 正如我所期望的 每次调用的结果都是一个对象 但是 我无法让这些对象以angular forEach 文档
  • JavaScript-如何在不使用 charAt 方法的情况下返回该索引处的字符

    我有一个接受两个参数字符串和索引的函数 如何编写一段代码 在不使用 javascript 内置方法 charAt 的情况下返回该索引处的字符 例如 getIndex great 1 应该返回 r 创建函数如下 function getInd
  • 当 Markdown 包含水平线时,“生成 PDF 时出错”: --- 或 ***

    当我的 Markdown 文件包含水平线 或 时 我收到有关 Linethickness gt Protect 的错误 我知道最近 MiKTeX 出现了问题 但我不确定它们是否适用于此 从昨天早上开始 我就一直遇到这个问题 当时我正在尝试让
  • Android 底部导航 Activity 在 onCreate 中出现空指针异常

    我向我的项目添加了一个底部导航活动 但是当我启动相关活动时 它给出了空指针异常 它说异常是在第 28 行触发的 在 lk apiit eea mobile Activities CompanyProfile onCreate Company
  • PHP:获取关联数组的第n项

    如果你有一个关联数组 Array uid gt Marvelous status gt 1 set later gt Array 0 gt 1 1 gt 0 op gt Submit submit gt Submit 如果您想访问第二项 您
  • 在特定桌面上启动进程

    如何在特定的 Windows 桌面上启动 Windows 进程 最好 我们正在寻找一种在 Windows 8 1 上也支持的解决方案 即不依赖于 Windows 10 的新任务视图功能 我知道 用户在 Windows 8 1 中不容易访问不
  • 使用 Backbone Marionette 使用现有渲染的 HTML 显示视图

    我有一个像所附的应用程序布局 上面的面板已经到了页面 即在服务器的 HTML 响应中 当用户与该面板中的元素交互时 下面的动态面板的内容会相应地发生变化 我研究了 Backbone Marionette 的各种视图类型和区域管理器 但我仍然
  • 更改 OS X 菜单栏中 Tkinter 应用程序的标题

    当您在 Python 中使用 Tkinter 创建带有 GUI 的应用程序时 应用程序的名称在 OS X 的菜单栏中显示为 Python 如何才能让它显示为其他内容 我的答案是基于埋在中间的一个一些论坛 http compgroups ne
  • statespace.SARIMAX模型:为什么模型使用所有数据来训练模式,并预测训练模型的范围

    我按照教程研究了SARIMAX模型 https www digitalocean com community tutorials a guide to time series forecasting with arima in python
  • Dagger 2 活动注入不起作用

    我正在尝试新的 dagger 2 这是我第一次实现它 但我无法让它工作 我想我已经明白了这个概念并且理解了这个例子here https github com LiveTyping u2020 mvp 我尝试复制相同的结构 只是针对我的示例进
  • Java Process.waitFor() 和 Readline 挂起

    首先 这是我的代码 import java io import java util Date import com banctecmtl ca vlp shared exceptions public class PowershellTes
  • elasticsearch有复合索引吗?

    我想知道elasticsearch是否需要预先定义复合索引 通过复合索引 我的意思是类似于 mongodb 的东西 db collection ensureIndex 字段1 1 字段2 1 字段3 1 或者类似于 mysql db 的东西