如何在弹性搜索中搜索自由文本?

时间:2012-11-12 11:57:23

标签: elasticsearch

在弹性搜索中,我们如何搜索自由文本。例如,我们在其中一个属性中有自由文本数据,例如“ test!£!£”!£“test ”。

当我使用QueryBuilders进行搜索时,由于特殊字符,它会产生异常。

在搜索网页时,请注意我们需要使用Lucene的escapeUtils。 QueryParser.escape(searchText)

现在,当我在这种情况下进行完全匹配搜索时,它会忽略这些字符并将结果显示为“test”。

请就此提出建议。

1 个答案:

答案 0 :(得分:2)

您可能正在使用默认映射,因此StandardAnalyzer。我想它正在剥离那些甚至没有编入索引的字符。您需要决定如何索引文本。您想要标记化还是想要一个令牌?你想将这些字符保留在索引中吗?基于此,您需要选择正确的分析器并通过Put mapping API更新您的映射。例如,如果您希望按原样索引文本,则只需将该字段配置为"index":"not_analyzed",这意味着它的上下文将被编入索引,但不会对其应用文本分析。