1

您如何返回以某个字母开头的构面的匹配项?例如,Elasticsearch 建议您使用查询"T*"返回所有以字母 T 开头的标题。但是,这似乎返回包含任何以字母 T 开头的单词的标题。例如,“Trees and Shrubs”以及“如何修剪树木。” 我只想返回“树木和灌木”。我尝试使用"^T*",但返回 SearchPhraseExecutionException。

4

1 回答 1

2

默认情况下,elasticsearch使用默认分析器分析字段,该分析器将字段拆分为通常在英语单词边界上拆分的标记。所以“How to Prune Trees”被分成(“How”、“to”、“Prune”、“Trees”),然后标记“Trees”与您的查询“T*”匹配。为避免这种情况,您必须指定该字段在对象映射中。这使得 elasticsearch 有效地将字段值视为一个巨大的标记,然后它将与您的前缀查询正确匹配。not_analyzed

您还可以查看前缀 query,但这实际上只是发出相同查询的另一种方式。您仍然需要指定不在映射中分析该字段。

于 2013-09-12T05:55:57.867 回答