将字符串字段映射为文本和关键字时的 ElasticSearch 性能注意事项?

标签 elasticsearch elasticsearch-7

我有一个关于在将字符串字段映射为 textkeyword 与仅其中之一时要记住的权衡/性能注意事项的问题。

我有一个用例,其中将 25-30 个字符串字段映射为文本和关键字会很好,但如果有一些严肃的性能考虑,那么我会向下钻取并将它们中的每一个仅映射到他们最常被搜索为的类型。

我在网上找不到太多关于这方面的信息。故在此问。

ElasticSearch 版本 7.10 谢谢!

最佳答案

ES 提供的默认映射将一个字段映射为 textkeyword 通常这样做是因为它很方便并且允许该字段在不同的上下文中使用无需考虑太多。这也是引导新项目的好方法,并且在项目后期之前不要太担心这方面。

但是,如果您真的认真对待您的映射和集群的性能,您应该始终尽可能多地考虑为什么要以某种方式映射字段。

以下(非详尽)列表中有一些基本规则(但您的里程可能总是不同):

  • 您通常在精确搜索中使用的 ID、代码、 key 等只能映射为关键字(和/或通配符 depending on your search use cases)。<
  • 如果您有较长的文本片段更接近于您可能想要对其运行全文搜索的自然语言,那么将它们映射为 text 通常是个好主意。
  • 前面规则的推论是,如果您知道您永远不想在某个字段上运行全文搜索,则不要将其映射为文本因为在分析过程中与索引文本字段相关的开销不可忽略。
  • ...

如前所述,显然上面的列表并非详尽无遗,但它为您提供了一些指导。最重要的是,您需要仔细考虑您的数据以及您想要用它做什么。一旦您知道需要支持的用例,您就会知道如何映射您的字段。如果没有理由,我绝不会接受默认的文本/关键字映射。

关于将字符串字段映射为文本和关键字时的 ElasticSearch 性能注意事项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65003808/

相关文章:

elasticsearch - 嵌套 bool 查询如何工作?是否有一个包装器可以禁用所有嵌套级别上的嵌套?

java - 索引未知字段时强制使用字符串类型

elasticsearch - Elasticsearch返回无与伦比的结果

azure - 无法从服务器外部访问 ElasticSearch 实例 - Azure Windows 2012

datetime - 具有日期格式的索引映射,使用curl引发解析异常

elasticsearch - 从ES 7.6.1中的ES 6.4.2恢复快照后,为什么无法按ID提取索引文档?

elasticsearch - 通过聚合计算嵌套文档的数量:elasticsearch

nginx - 当配置中已经存在奇迹 block 时,如何为 kibana4 配置 Nginx 服务器 block

elasticsearch - elasticsearch术语查询未获取所有文档