当前位置: 首页 > 知识库问答 >
问题:

匹配短语前缀查询

周子平
2023-03-14

我遇到了一个问题,elasticsearch在我的环境(舞台和生产)中返回不同的结果。

我使用的elasticsearch版本对于这两种环境是相同的。

version: { created: 1000199}

这两个环境都具有相同的映射和索引设置。

我有一个项目索引的标题字段为“测试”。我正在尝试执行match_phrase_prefix查询。然而,在我的舞台环境中,当我搜索“te”时,结果会像预期的那样返回。在生产中,我必须将搜索查询扩展到“TES”(3个字母)才能检索文档。

我发出的查询如下:

{
  "query": {
    "match_phrase_prefix": {
      "title": "test"
    }
  },
  "post_filter": {
    "term": {
      "uniqueId": "my_unique_id"
    }
  }
}

在这两种环境中我能看到的唯一区别是文档索引的数量。

在我的舞台环境中,我有大约。150K文档索引,相当于大约297M。

在生产中,我已经索引了超过1.2亿个文档,相当于接近120GB。

这是一个规模问题,还是有一些elasticsearch设置,我错过了。正如我所说的,映射和设置在不同的环境中是相同的,所以我在这里有点难倒了。

共有1个答案

冯旭
2023-03-14

我很晚了,但看看我的另一个答案。问题在于max_expandsions参数,默认情况下该参数为10。

与生产环境相比,您的临时环境中以“TE”开头的单词更少,并且它能够在10个扩展中获得测试(按字母顺序排列)

 类似资料:
  • 我不知道如何通过MatchPhrasePrefix搜索索引中的文档。我想匹配整个搜索词短语,但允许在最后一个词上加前缀。 这个LINQ建筑给了我1.0分的一切。我将如何构建这个?另一方面,是否可以查看NEST正在构建的原始查询?那将非常有帮助!

  • 在PostgreSQL中获得最长前缀匹配的准确快速查询的最佳方法是什么? 是: 我计划在更新中使用。有什么想法吗?

  • 我正在使用elasticsearch从json字段进行精确短语匹配。我尝试过多种语法,比如multi_match、query_string query_string我正在使用的语法; 我也尝试了过滤器而不是查询,但是过滤器在json上没有给出任何结果。我用于过滤器的语法是; 现在的问题是; 是否可以使用elasticsearch对json执行精确匹配操作?

  • 我有一个字段,使用空白标记器和小写和asciifolding过滤器进行分析。我试图运行一个同时包含前缀和通配符的查询。我们正在用ElasticSearch取代一个使用纯Lucene的本土搜索引擎,类似的查询确实使用Lucene语法,但在ElasticSearch中不起作用。 例如,该查询将查找在“name”字段中有“Smith John”的所有文档。 如果我省略引号,我会得到结果,但这包括在同一文

  • 问题内容: 这对我来说应该是显而易见的,但事实并非如此。以下两个仅匹配第二个阶段(在这种情况下为) 而以下错误发出错误消息 我想匹配包含的所有文件 或者 输入完全相同的词组。 问题答案: 您的第一个查询实际上不是有效的JSON对象,因为您两次使用相同的字段名称。 您可以使用布尔必须查询来匹配两个短语:

  • foo-bar-herp foo-bar-derp baz-blub其他东西 我想提供一个搜索工作,以便 “foo bar”(标记化前缀) “Foo Herp”(跳过令牌) “foo-bar-”(确切的前缀) “bar-herp”(中间的确切字符串) “foo ba”(一个完整的令牌和另一个令牌的前缀) null