我有一个关于在将字符串字段映射为 text
和 keyword
与仅其中之一时要记住的权衡/性能注意事项的问题。
我有一个用例,其中将 25-30 个字符串字段映射为文本和关键字会很好,但如果有一些严肃的性能考虑,那么我会向下钻取并将它们中的每一个仅映射到他们最常被搜索为的类型。
我在网上找不到太多关于这方面的信息。故在此问。
ElasticSearch 版本 7.10 谢谢!
最佳答案
ES 提供的默认映射将一个字段映射为 text
和 keyword
通常这样做是因为它很方便并且允许该字段在不同的上下文中使用无需考虑太多。这也是引导新项目的好方法,并且在项目后期之前不要太担心这方面。
但是,如果您真的认真对待您的映射和集群的性能,您应该始终尽可能多地考虑为什么要以某种方式映射字段。
以下(非详尽)列表中有一些基本规则(但您的里程可能总是不同):
- 您通常在精确搜索中使用的 ID、代码、 key 等只能映射为
关键字
(和/或通配符
depending on your search use cases)。< - 如果您有较长的文本片段更接近于您可能想要对其运行全文搜索的自然语言,那么将它们映射为
text
通常是个好主意。 - 前面规则的推论是,如果您知道您永远不想在某个字段上运行全文搜索,则不要将其映射为
文本
因为在分析过程中与索引文本字段相关的开销不可忽略。 - ...
如前所述,显然上面的列表并非详尽无遗,但它为您提供了一些指导。最重要的是,您需要仔细考虑您的数据以及您想要用它做什么。一旦您知道需要支持的用例,您就会知道如何映射您的字段。如果没有理由,我绝不会接受默认的文本/关键字映射。
关于将字符串字段映射为文本和关键字时的 ElasticSearch 性能注意事项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65003808/