我正在使用 elasticsearch 6.8 进行文本搜索。我意识到弹性搜索标记器通过使用此处列出的分隔符将文本分解为单词:http: //unicode.org/reports/tr29/#Default_Word_Boundaries。我match_phase
用来搜索文档中的一个字段,我想删除标记器使用的一个分隔符。
我进行了一些搜索并找到了一些解决方案,例如使用keyword
而不是text
. 这个解决方案会对我的搜索功能产生很大的影响,因为它不支持部分查询。
另一种解决方案是使用keyword
查询但使用通配符来支持部分查询。但这可能会影响查询的性能。而且,我仍然喜欢将标记器用于其他分隔符。
第三个选项是用于tokenize_on_chars
定义用于标记文本的所有字符。但这需要我列出所有其他分隔符。所以我正在寻找类似的东西tokenize_except_chars
。
那么有没有一种简单的方法可以让我从 Elasticsearch6.8 中使用的分隔符标记器中取出一个字符?