elasticsearch,analyzer,Search,elasticsearch,Analyzer" /> elasticsearch,analyzer,Search,elasticsearch,Analyzer" />

Search 弹性搜索-搜索\u分析器与索引\u分析器

Search 弹性搜索-搜索\u分析器与索引\u分析器,search,elasticsearch,analyzer,Search,elasticsearch,Analyzer,我在看 这解释了ElasticSearch分析器 我不理解使用不同的搜索和索引分析器的部分。 自定义映射的第二个示例如下: ->索引分析器是一个Edengram ->搜索分析器是: "full_name":{ "filter":[ "standard", "lowercase", "asciifolding" ], "type":"custom", "tokenizer":"standard" } 如果我们希望查询

我在看 这解释了ElasticSearch分析器

我不理解使用不同的搜索和索引分析器的部分。 自定义映射的第二个示例如下:
->索引分析器是一个Edengram
->搜索分析器是:

"full_name":{
    "filter":[
        "standard",
        "lowercase",
        "asciifolding"
    ],
    "type":"custom",
    "tokenizer":"standard"
}
如果我们希望查询“Race”由于EdgeGram而不返回*ra*pport和*rac*ial这样的结果,那么为什么首先使用EdgeGram对其进行索引


请举例说明不同的分析器在哪里有用。

通常在索引时间和查询时间都有类似的分析链。相似并不意味着完全相同,但通常索引文档的方式反映了查询文档的方式

ngrams示例非常适合,因为这是在索引和查询时使用不同分析器的主要原因之一

对于部分匹配,您使用edge Ngram索引,以便“elasticsearch”变为(使用mingram 3和maxgram 20):

“ela”、“elas”、“elast”、“elasti”、“elastic”、“elastics”、“elasticsea”、“elasticsear”、“ELASTICSEARC”和“elasticsearch”

现在让我们查询创建的字段。如果我们查询“弹性”一词,则存在一个匹配项,并返回预期结果。我们基本上把上面所说的部分匹配变成了精确匹配,给出了我们的索引。也不需要将ngrams应用于查询。如果我们这样做,我们将查询以下所有术语:

“ela”、“elas”、“elast”、“elasti”和“elastic”

这将使查询方式更加复杂,并会导致得到奇怪的结果。假设您在另一个文档的同一字段中索引术语“已用”。您将拥有以下ngram:

“ela”,“elap”,“elaps”,“elapse”,“elapse”

如果您搜索“elastic”并对查询进行ngrams,那么术语“ela”也将与第二个文档匹配,因此您可以将其与第一个文档一起返回,即使没有任何术语包含您要查找的整个“elastic”术语

我建议您看一看,使用不同的分析仪和它们的不同结果进行游戏。

参考:

有时,在索引和索引处使用不同的分析器是有意义的 搜索时间。例如,在索引时,我们可能需要索引 同义词(如quick的每一次出现),我们也索引fast,rapid 而且速度很快。但在搜索时,我们不需要搜索所有 这些同义词。相反,我们可以只查找 用户已输入,无论是快速、快速、快速还是快速

为了实现这一区别,Elasticsearch还支持 索引\u分析器和搜索\u分析器参数,以及名为 默认索引和默认搜索

考虑到这些额外参数,索引处的完整序列 时间是这样的:

  • 字段映射中定义的索引_分析器,否则
  • 在字段映射中定义的分析器,否则
  • 在文档的_analyzer字段中定义的分析器,否则
  • 类型的默认索引\u分析器,默认为
  • 类型的默认分析器,默认为
  • 分析器在索引设置中命名为default_index,默认为
  • 分析器在索引设置中命名为default,默认为
  • 分析器在节点级别命名为default_index,默认为
  • 分析器在节点级别命名为default,默认为
  • 标准分析仪
在搜索时:

  • 在查询本身中定义的分析器,或者
  • 在字段映射中定义的搜索\u分析器,否则
  • 在字段映射中定义的分析器,否则
  • 该类型的默认搜索\u分析器,默认为
  • 类型的默认分析器,默认为
  • 在索引设置中名为default_search的分析器,默认为
  • 分析器在索引设置中命名为default,默认为
  • 名为default_search的分析器位于节点级别,默认为
  • 分析器在节点级别命名为default,默认为
  • 标准分析仪

我可以知道我的回答是否让你更清楚了吗?顶部的链接是Breaked elasticsearch插件有助于了解各种分析器的工作方式。@gsk非常感谢您提到上述插件。查看我的数据在elasticsearch中的索引非常有帮助。@javanna解释得很好bro非常感谢您的帮助回答。@javanna谢谢你,这正是我想要的。GBU