我使用BoolqueryBuilder搜索值与java Spring Boot 后端。
我需要在带有特殊字符的ElasticSearch值中进行搜索,如“@#$%test test search”
- 有没有办法用querystring / matchquery / wildcard来获取搜索值。
- 我的ElasticSearch索引名是document.,字段名是value
- 是否需要创建自定义分析器才能进行此搜索。
- 它也不应该影响正常的文本和数字搜索,它应该是大小写敏感。
我使用BoolqueryBuilder搜索值与java Spring Boot 后端。
我需要在带有特殊字符的ElasticSearch值中进行搜索,如“@#$%test test search”
1条答案
按热度按时间krcsximq1#
以下是如何搜索数据的示例
参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#_reserved_characters
上面的方法并不是最好的,所以我想给予更多的信息,解释如何更有效地搜索数据。在下图中,你将看到elasticsearch标准analyze在索引和搜索过程中是如何工作的。
如果您不需要分析器(在您的场景中可能不需要),可以使用不进行分析的keyword字段类型。
当您在Elasticsearch中将文档作为字符串进行索引时,ECS会自动为每个字符串创建2个字段,其中一个字段将命名为文本类型的field_name,另一个字段将命名为关键字类型的field_name.keyword,下面是一个示例:
case insensitive