问题标签 [elasticsearch-mapping]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
elasticsearch - 在 Elasticsearch 映射中无意添加的“查询”属性
我最近将我们的 ElasticSearch 服务器从版本 0.9 更新到 1.4,当我为新的 ES 导入 Mapping 时,我看到在映射中添加了这个:
该片段不在我导入的映射中,但它总是在我查询时出现curl -X GET localhost:9200/my_index/_mapping?pretty
。
有没有其他人看过这个?
java - 具有未映射字段的 Elastic Search 过滤别名
我最近开始使用filtered aliases
Elastic Search (此处的文档),但有一个我不知道如何处理的用例。
用例
我在 ElasticSearch 中为事实编制索引的每个文档都将有一个名为“tenantId”的字段(以及一些其他字段,例如“type”、“id”等)。现在所有文档都驻留在同一个索引中,所以每个租户我想确保我创建了一个过滤的别名。现在,我想在创建租户本身并方便使用“tenantId”后立即创建过滤别名。
问题
当我尝试使用他们的 java 客户端以编程方式创建别名时,出现以下异常:
研究更多,我发现我可能可以使用动态模板来实现这一点。所以我创建了一个模板,将其保存在 下config/templates
,重新创建了我的索引并再次尝试了同样的事情。再次遇到同样的异常。在阅读更多here文档(页面底部3行)时,我发现即使我尝试将以下属性更改index.query.parse.allow_unmapped_fields
为true(我还没有尝试过),对于过滤的别名,它也会强制它错误的。
现在的问题是,我该如何处理我的用例?我不知道相应类型的映射,但我所知道的事实是,我索引的每个文档,无论类型如何,总是有一个名为的字段tenantId
,这就是我想要创建过滤别名的内容。
编辑
我发现了几个有用的链接。不确定这是固定在哪个版本上。 模板中过滤的别名不会从别名索引中继承映射 #8473 index.query.parse.allow_unmapped_fields 设置似乎不允许别名过滤器中未映射的字段 #8431
第二次编辑
发现了 ElasticSearch 的一个开放错误,具有完全相同的问题。等待 ES 开发人员回复。使用模板映射在空索引上创建过滤别名失败 #10038
非常感谢所有帮助!几天以来,我一直在尝试解决这个问题,但没有运气:(。
以下是我用来添加过滤别名的代码,以及默认映射 json 模板
模板
JAVA客户端
(你现在可以忽略“Observable”相关的东西)
elasticsearch - 在 Elasticsearch 中具有不同索引/类型的类型中具有相同名称的字段名称
我已经阅读了很多关于 Elasticsearch 中的映射的内容,这是我发现的一些有趣的东西
我从这里的文档中找到了上面的引用
现在我的用例就是这样。这是一个例子。假设some field
在tenant1 中必须具有以下映射(对于给定的实体用户):
现在,对于不同租户中的相同字段(对于相同的实体类型,比如说用户),类型必须更改如下:
现在从我从上面的引用中了解到,这意味着即使我可以提供这种映射,技术上也不推荐,因为 Lucene 以同样的方式处理它们。
我的问题是:
1)如何处理我的用例?我是否应该在不同的索引中分离出每个租户,这样我就不必担心这个映射?
2)还有其他解决方法吗?考虑到如果我有太多租户,这意味着我将拥有太多索引这一事实?
3)这个用例的推荐方法是什么?
所有帮助表示赞赏!
elasticsearch - 覆盖弹性搜索的默认关键字分析
我正在尝试将弹性搜索索引配置为使用keyword
分析器进行分析的默认索引策略,然后在某些字段上覆盖它,以允许对它们进行自由文本分析。如此有效地选择加入自由文本分析,我在映射中明确指定分析哪些字段以进行自由文本匹配。我的映射定义如下所示:
所以standard
应该是一个分析的字段,并且keyword
应该是完全匹配的。但是,当我使用以下命令插入一些示例数据时:
我没有得到与以下查询的任何匹配:
但是我确实得到了比赛:
这让我觉得这个standard
领域没有被分析。有谁知道我做错了什么?
elasticsearch - Elasticsearch - 将文档拆分为单独索引的含义
假设我有 100,000 个来自不同客户组的文档,它们的格式相同,信息类型相同。
来自各个客户组的文档会在一天中的不同时间刷新。有人建议我为每个客户组提供自己的索引,这样当我的个人客户索引在本地刷新时,我可以为该客户创建一个新索引并删除该客户的旧索引。
将数据拆分为多个索引并使用别名进行查询的含义是什么?具体来说:
- 它会增加我的服务器硬盘要求吗?
- 它会增加我的服务器 RAM 需求吗?
- 通过查询别名查询所有索引,elasticsearch 会不会比较慢?
感谢您提供任何帮助或建议。
elasticsearch - 在 Elasticsearch 索引模板中指定日期字段
我尝试更新我的索引模板以允许直接在 Elasticsearch 中的映射级别使用纪元和 ISO8601 日期格式,这应该覆盖 @timestamp 字段。到目前为止,我没有运气。我的模板可以在这里查看http://pastebin.com/1DCT6GfM。
本质上,一旦我解析了由 Logstash 解析的 json 日志,Elasticsearch 应该会识别这些字段并自动更新 @timestamp 字段。潜在日志事件的示例包括:
{"timestamp_epoch": "1432146610", "message": "This is a test message to test epoch timestamp events", "category": "testing", "country": "EU"}
或者
{"timestamp_iso8601": "2015-05-20T14:30:20-05:00", "message": "This is a test message to test epoch timestamp events", "category": "testing", "country": "US"}
请注意,该模板中的所有其他映射都可以正常工作,除了timestamp_epoch
和timestamp_iso8601
。我可以告诉这两个映射没有生效,因为@timestamp 没有更新到正确的值。
您可以在此处查看一些原始示例 Elasticsearch 条目:http: //pastebin.com/HmtmNNAb
timestamp_iso8601的类型正在更新为date
,但它没有覆盖 @timestamp 字段,并且timestamp_epoch设置为字符串而不是日期
如果有人能准确地澄清我做错了什么,我将不胜感激。
谢谢!
elasticsearch - ElasticSearch 文档中是否可以有多个 geo_point 索引?
我有以下类型的映射:
我可以毫无困难地插入文档。但是当我尝试过滤它们时,departure
我没有得到任何结果,当我尝试时destination
它工作得很好。
geo_point
所以问题是:同一个文档中是否可以有多个?
编辑:
样本文件:
示例查询:
谢谢!
elasticsearch - 如何在elasticsearch中为动态键创建映射
如果我把这样的文件:
然后它创建一个像这样的映射:
“books”对象中的属性/键是动态的,映射会无限增长。如何让 ES 不查看“books”的键并使其了解“books”中的每个值都属于同一类型?例如,映射不应该包含每个图书 ID 的新条目。
elasticsearch - 在同一映射中使用 not_analyzed 和analyzer 会发生什么?
据我所知,在弹性搜索映射中,这index:not_analyzed
意味着它在没有分析的情况下对值进行索引。
和
当我们想指定一个分析器时,我们可以使用analyzer:<some-analyzer>
.
我见过一些人使用这两种设置来处理同一个字段,比如
上面设置的效果是什么,对我来说似乎很矛盾。我错过了什么吗?
elasticsearch - Elasticsearch 嵌套对象
这是我的映射模板。
}
我的问题是使用此聚合搜索产品时
}
我得到这个错误。
我哪里错了,我看不到。谁能帮帮我