2
  • 我正在使用 elasticsearch 7.2 版,并且正在
    改进应用程序进行的 ES 调用的性能
  • 根据我的阅读,如果我们没有设置“搜索分析器”,默认情况下将设置标准分析器。
  • 但是在不需要分析器的情况下,拥有分析器可能会影响性能。将所有字段都作为“关键字”可以防止这种情况吗?
  • 或者有没有其他方法可以禁用这个“搜索分析器”

Ps:对于任何答案,如果您可以将我指向答案所依据的 ES 官方文档,我将非常感激。

4

1 回答 1

3

搜索分析器出现在各种场景中。

查询类型:- 有些查询被分析,有些则不被分析。像匹配查询一样分析的查询在索引映射中定义的字段上使用相同的分析器,而像术语查询这样的查询不使用任何搜索时间分析器。阅读弹性搜索匹配与术语查询

也来自官方 ES 文档的片段

匹配查询是布尔类型。这意味着对提供的文本进行分析,分析过程从提供的文本构造一个布尔查询。

字段类型

Text fields默认情况下进行分析,标准分析器是它们的默认分析器,因此如果您没有为索引映射中的文本字段定义分析器然后进行匹配查询,它将使用standard分析器,但如果您使用term查询,那么它将不要使用搜索时间分析器。

keyword字段然后它将使用关键字分析器,这是无操作分析器,因此对于关键字字段的匹配查询,它将使用关键字分析器,但本质上就像不应用搜索时间分析器一样。

如果您使用匹配查询或任何其他使用搜索时间分析器的分析查询,那么您可以明确提及搜索时间分析器作为关键字分析器,正如我所解释的那样,它是一个无操作分析器,因此生成令牌将非常有效。

于 2019-06-28T03:41:16.677 回答