gpt4 book ai didi

java - 用于电子邮件搜索的 ElasticSearch AnalyzeRequest 对象

转载 作者:行者123 更新时间:2023-11-30 05:21:14 28 4
gpt4 key购买 nike

使用高级客户端从elasticsearch中搜索emailId,得到空结果。为了解决这个问题,我在我编写的代码下面使用 AnalyseRequest

AnalyzeRequest request = AnalyzeRequest.buildCustomAnalyzer("logs","uax_url_email")
.addCharFilter("html_strip")
.addTokenFilter("lowercase")
.build("gya.nay@gmail.com");

上面的代码似乎不起作用。

不明白如何应用自定义过滤器。有人告诉我如何创建AnalyzeRequest对象。

最佳答案

OP没有提供搜索代码,可能会对什么是Analyze API感到困惑,看起来最终使用它来进行搜索操作。考虑到这一切我正在写一个关于如何使用 Elasticsearch 高级客户端搜索邮件 ID 的一般答案。

首先,您需要使用 uax_url_email 创建自定义分析器分词器和 ES 映射关联 email使用此自定义分析器的字段如下所示:

使用自定义分析器的电子邮件字段的 ES 映射和设置示例

用于创建索引的 API 端点:-

http://{{hostname}}:9200/<index-name> http方法PUT

{
"settings": {
"index": {
"analysis": {
"filter": {
"lowercaseFilter": {
"type": "lowercase"
}
},
"analyzer": {
"email": {
"filter": [
"lowercaseFilter"
],
"type": "custom",
"tokenizer": "uax_url_email"
}
}
}
}
},
"mappings": {
"properties": {
"emailId":
{
"analyzer": "email",
"type": "text"
}
}
}
}

创建索引后,使用索引 API 索引一些文档,然后使用下面的 java 高级 REST 客户端来搜索邮件 ID:

代码

SearchRequest searchRequest = new SearchRequest("index-name");
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
if (email != null) {
MatchQueryBuilder emailMatchQueryBuilder = new MatchQueryBuilder("emailId", email);
boolQueryBuilder.must(emailMatchQueryBuilder);
}
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(boolQueryBuilder);
log.info("Search json {} for user exist", searchSourceBuilder.toString()); --> you can check the ES search json generated.
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = esclient.search(searchRequest, RequestOptions.DEFAULT);

上面将为您提供搜索结果中的邮件 ID,如果您遇到问题,请告诉我。

关于java - 用于电子邮件搜索的 ElasticSearch AnalyzeRequest 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59542402/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com