当前位置: 首页 > 面试题库 >

Elastic search-search_analyzer与index_analyzer

翁建弼
2023-03-14
问题内容

我正在查看 http://euphonious-intuition.com/2012/08/more-complicated-mapping-in-
elasticsearch/
,其中介绍了ElasticSearch分析器。

我不了解有关使用不同的搜索和索引分析器的部分。定义映射的第二个示例是这样的:
->索引分析器是edgeNgram-

搜索分析器是:

"full_name":{
    "filter":[
        "standard",
        "lowercase",
        "asciifolding"
    ],
    "type":"custom",
    "tokenizer":"standard"
}

如果我们希望查询“ Race” 由于edgeNgram 不返回诸如 ra * pport和 rac * ial之类的结果,为什么要首先使用edgeNgram对其进行索引?

举例说明不同的分析仪有用。


问题答案:

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

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

对于部分匹配,可以使用边缘ngram进行索引,以便“ elasticsearch”成为(使用mingram 3和maxgram 20):

“ ela”,“ elas”,“ elast”,“ elasti”,“ elastic”,“ elastics”,“ elasticse”,“
elasticsea”,“ elasticsear”,“ eleasticsearc”和“ elasticsearch”

现在查询创建的字段。如果查询“弹性”一词,则表示匹配,并且返回预期结果。给定索引后,我们基本上使部分匹配之上的我们称为完全匹配。也无需对查询应用ngram。如果这样做,我们将查询以下所有术语:

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

这将使查询方式更加复杂,并导致获得奇怪的结果。假设您在另一个文档的同一字段中为术语“经过”编制了索引。您将具有以下ngram:

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

如果您搜索“ elastic”并对查询进行ngram运算,则术语“ ela”也将与第二个文档匹配,因此即使没有任何术语包含完整的“
elastic”术语,您也会将其与第一个文档一起返回。在寻找。

我建议您看一下分析API,以使用不同的分析器及其不同的结果。



 类似资料:
  • 在ElasticSearch7.x中,我使用一个具有同义词过滤器的分析器对数据字段进行了索引。但是,为了支持增强“完全”匹配数据字段中的查询词的查询,而不是匹配数据中的同义词的查询,我将使用。 为此,对于我想要精确匹配的查询,我想提供一个在其中没有同义词过滤器的分析器。这可以通过来完成。但是,我的主要查询是查询,用于在所有需要的字段上搜索这些术语(并且具有不同的重要性(boosting))。 似乎

  • 我在查看http://euphonious-intuition.com/2012/08/more-complex-mapping-in-elasticsearch/,它解释了ElasticSearch分析器。 我不理解关于有不同的搜索和索引分析器的部分。自定义映射的第二个示例如下所示: ->索引分析器是Edgengram ->搜索分析器是: 请用一个例子说明不同的分析器在哪些地方是有用的。

  • 问题内容: 我正在学习NoSQL,并正在为客户的需求之一寻找不同的选择。在提出这个问题之前,我已经遍历了各种资源(对NoSQL不太了解的人) 我需要以更快的速度存储数据并读取数据。 完全故障安全且易于扩展。 能够搜索数据以获取Google Analytics(分析)。 最后我列出了以下内容: 我所了解的是,Cassandra对我来说是一个完美的NoSQL存储解决方案,因为我可以使用索引写入数据和读

  • 问题内容: 我在Elasticsearch中使用Pyspark。我注意到,当您创建RDD时,不会在任何收集,计数或任何其他“最终”操作之前执行该RDD。 当我将转换后的RDD的结果用于其他事情时,是否还有执行和缓存转换后的RDD的方法。 问题答案: 就像我在评论部分所说的那样, Spark中的所有转换都是 惰性的 ,因为它们不会立即计算出结果。相反,他们只记得应用于某些基本数据集(例如文件)的转换

  • 问题内容: 对于其他Elasticsearch开发人员来说,这可能是一个非常简单(愚蠢的问题),这两者之间有什么区别? 我正在从Java Web应用程序连接到远程Elasticsearch服务器,到目前为止,我一直在使用TransportClient,但是我想知道是否可以使用NodeBuilder,或者应该仅将NodeBuilder用于嵌入式客户端? 如果可以将两者中的任何一个用于连接到远程ES服

  • 我有一个spring boot 2.2.5应用程序,并计划使用AWS elasticsearch,其版本为7.4。有人能告诉我是使用Spring数据elasticsearch还是elasticsearch库吗?我在SO上看到一些帖子谈到了这一点,但它们都很老了,并且谈到restHighLevel客户端不受支持,而现在spring data elasticsearch 4中的情况并非如此。x、 无论