Spring 数据查找包含特殊字符的子字符串
Spring Data find substring containing special characters
如何从 elasticsearch 中检索包含 等特殊字符的数据。 / - ... 使用 spring 数据 ?
我有这样定义的文档:
@Document(indexName = "audit-2018.135", type = "audit")
public class Trace {
@Id
private String id;
@Field(type = FieldType.Text)
private String uri;
// setters & getters
}
我需要按字段 uri 从 elasticSearch 检索数据。
下面是数据的外观示例:
martin-int-vip.vs.cz:5080/kib/api/runtime/case/CASE0000000000324223
使用kibana时我可以使用:
uri: "martin-int-vip.vs.cz:5080/kib"
然后我取回上面包含所需子字符串的记录。
现在我需要从 java 实现相同的结果,但是在 spring 数据中它没有按预期工作。
我有这样定义的 elasticSearchRepository:
public interface TraceRepository extends ElasticsearchRepository<Trace, String> {
List<Trace> findByUriContaining(String uri);
}
当我使用参数 uri 调用方法 findByUriContaining 时:
martin-int-vip.vs.cz:5080\/kib
甚至这个
martin-int
我得到 0 个结果。当我发送 "kib" 作为参数时,它 returns 正确地包含单词 "kib" 的所有记录但是它不适用于像 . 这样的特殊字符。 / - 等等。我应该如何从 java 查询我的 elasticSearch 以获取包含我想要的子字符串的所有记录?谢谢
我发现默认情况下 elasticSearch 分析器会标记您的查询。它查找的不是 "martin-int-vip.vs.cz:5080/kib",而是包含 martin 和 int 以及 vip 的字段...
为了查询这类字段,您需要更改分析器的行为,或者您可以使用 elasticSearchTemplate 和 Criteria 来构建更灵活的查询。
如何从 elasticsearch 中检索包含 等特殊字符的数据。 / - ... 使用 spring 数据 ?
我有这样定义的文档:
@Document(indexName = "audit-2018.135", type = "audit")
public class Trace {
@Id
private String id;
@Field(type = FieldType.Text)
private String uri;
// setters & getters
}
我需要按字段 uri 从 elasticSearch 检索数据。
下面是数据的外观示例:
martin-int-vip.vs.cz:5080/kib/api/runtime/case/CASE0000000000324223
使用kibana时我可以使用:
uri: "martin-int-vip.vs.cz:5080/kib"
然后我取回上面包含所需子字符串的记录。
现在我需要从 java 实现相同的结果,但是在 spring 数据中它没有按预期工作。
我有这样定义的 elasticSearchRepository:
public interface TraceRepository extends ElasticsearchRepository<Trace, String> {
List<Trace> findByUriContaining(String uri);
}
当我使用参数 uri 调用方法 findByUriContaining 时:
martin-int-vip.vs.cz:5080\/kib
甚至这个
martin-int
我得到 0 个结果。当我发送 "kib" 作为参数时,它 returns 正确地包含单词 "kib" 的所有记录但是它不适用于像 . 这样的特殊字符。 / - 等等。我应该如何从 java 查询我的 elasticSearch 以获取包含我想要的子字符串的所有记录?谢谢
我发现默认情况下 elasticSearch 分析器会标记您的查询。它查找的不是 "martin-int-vip.vs.cz:5080/kib",而是包含 martin 和 int 以及 vip 的字段...
为了查询这类字段,您需要更改分析器的行为,或者您可以使用 elasticSearchTemplate 和 Criteria 来构建更灵活的查询。