当前位置: 首页 > wzjs >正文

服装网站策划设计二手书交易网站开发背景分析

服装网站策划设计,二手书交易网站开发背景分析,驻马店营销型网站建设优化推广,顺德网站制作案例机构Elasticsearch RESTful API入门:全文搜索实战(Java版)本文结合Java客户端API,深入讲解Elasticsearch全文搜索的实现。包含10个实战示例及对应的Java代码,涵盖match、multi_match、高亮显示等核心功能。一、环境准备 1.…

Elasticsearch RESTful API入门:全文搜索实战(Java版)

本文结合Java客户端API,深入讲解Elasticsearch全文搜索的实现。包含10+个实战示例及对应的Java代码,涵盖match、multi_match、高亮显示等核心功能。

一、环境准备

1. 添加Maven依赖

<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.17.0</version> <!-- 请匹配ES服务器版本 -->
</dependency>

2. 初始化客户端

RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));

3. 创建索引(Java实现)

CreateIndexRequest request = new CreateIndexRequest("books");
request.settings(Settings.builder().put("index.number_of_shards", 1).put("index.number_of_replicas", 1)
);
// 定义mapping
XContentBuilder mappingBuilder = XContentFactory.jsonBuilder().startObject().startObject("properties").startObject("title").field("type", "text").field("analyzer", "ik_max_word").endObject().startObject("author").field("type", "keyword").endObject().startObject("content").field("type", "text").field("analyzer", "ik_smart").endObject().startObject("publish_date").field("type", "date").endObject().startObject("rating").field("type", "float").endObject().endObject().endObject();
request.mapping(mappingBuilder);
CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);

二、基础全文搜索实战(Java API)

1. match查询

SearchRequest searchRequest = new SearchRequest("books");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.matchQuery("content", "搜索技术"));
searchRequest.source(sourceBuilder);
SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
// 处理结果...

2. 设置AND逻辑

MatchQueryBuilder matchQuery = QueryBuilders.matchQuery("content", "分布式存储").operator(Operator.AND);
sourceBuilder.query(matchQuery);

3. 多字段搜索(multi_match)

MultiMatchQueryBuilder multiMatchQuery = QueryBuilders.multiMatchQuery("性能优化", "title", "content");
sourceBuilder.query(multiMatchQuery);

三、高级搜索技巧(Java实现)

1. 短语搜索

MatchPhraseQueryBuilder phraseQuery = QueryBuilders.matchPhraseQuery("content", "典型应用").slop(2); // 允许间隔2个词
sourceBuilder.query(phraseQuery);

2. 模糊搜索

MatchQueryBuilder fuzzyQuery = QueryBuilders.matchQuery("title", "Elasticsarch").fuzziness(Fuzziness.AUTO);
sourceBuilder.query(fuzzyQuery);

四、搜索结果优化(Java API)

1. 高亮显示

HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.field("content").preTags("<strong>").postTags("</strong>");
sourceBuilder.highlighter(highlightBuilder);
// 解析高亮结果
SearchHits hits = response.getHits();
for (SearchHit hit : hits) {Map<String, HighlightField> highlightFields = hit.getHighlightFields();HighlightField highlight = highlightFields.get("content");if (highlight != null) {Text[] fragments = highlight.fragments();String fragmentString = fragments[0].string();System.out.println(fragmentString);}
}

2. 结果排序

sourceBuilder.sort(new ScoreSortBuilder().order(SortOrder.DESC));
sourceBuilder.sort(new FieldSortBuilder("rating").order(SortOrder.DESC));

3. 字段权重

MultiMatchQueryBuilder weightedQuery = QueryBuilders.multiMatchQuery("搜索算法").field("title", 3.0f) // 提升title权重.field("content");
sourceBuilder.query(weightedQuery);

五、复杂场景实战(Java)

1. 组合搜索(bool查询)

BoolQueryBuilder boolQuery = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("content", "技术")).should(QueryBuilders.matchPhraseQuery("title", "实战")).filter(QueryBuilders.rangeQuery("rating").gte(4.0));
sourceBuilder.query(boolQuery);

2. 搜索建议

SuggestionBuilder termSuggestionBuilder = SuggestBuilders.termSuggestion("title").text("elastc").suggestMode(TermSuggestionBuilder.SuggestMode.ALWAYS);
SuggestBuilder suggestBuilder = new SuggestBuilder();
suggestBuilder.addSuggestion("title_suggest", termSuggestionBuilder);
sourceBuilder.suggest(suggestBuilder);
// 解析建议结果
Suggest suggest = response.getSuggest();
TermSuggestion termSuggestion = suggest.getSuggestion("title_suggest");
for (TermSuggestion.Entry entry : termSuggestion.getEntries()) {for (TermSuggestion.Entry.Option option : entry) {System.out.println(option.getText().string());}
}

六、资源释放

client.close(); // 使用后关闭客户端

七、常见问题(Java客户端相关)

  1. 依赖冲突
    确保Elasticsearch客户端版本与服务器一致
  2. 连接池管理
    推荐单例模式创建客户端,避免频繁创建销毁
  3. 异步操作
    高性能场景可使用异步客户端:
    client.searchAsync(searchRequest, RequestOptions.DEFAULT, new ActionListener<>() {@Overridepublic void onResponse(SearchResponse response) { /*处理响应*/ }@Overridepublic void onFailure(Exception e) { /*处理异常*/ }
    });
    

提示:完整代码示例可在GitHub仓库获取(虚拟链接:https://github.com/example/es-java-demo)

RESTful 操作Java 类/方法
创建索引CreateIndexRequest, RestHighLevelClient#indices().create()
添加文档IndexRequest
match查询QueryBuilders.matchQuery()
bool查询BoolQueryBuilder
高亮显示HighlightBuilder
分页SearchSourceBuilder#from()size()
排序SortBuilders

下集预告:《Elasticsearch 高可用实战:架构设计与场景化解决方案》


文章转载自:

http://VQBqtQqz.ntmgp.cn
http://W0EpoiMd.ntmgp.cn
http://6BRiUbCE.ntmgp.cn
http://gEIEznjx.ntmgp.cn
http://Ju1SgAZ4.ntmgp.cn
http://rTywyaBS.ntmgp.cn
http://E8TVZFeg.ntmgp.cn
http://Jp6nfM7t.ntmgp.cn
http://14fzZB7l.ntmgp.cn
http://fKntcfr2.ntmgp.cn
http://sz7ldJ4H.ntmgp.cn
http://wYgU8v7V.ntmgp.cn
http://RF1VNK9W.ntmgp.cn
http://CFD06qD7.ntmgp.cn
http://7b58gMTm.ntmgp.cn
http://0MwTCfak.ntmgp.cn
http://xZKPiyG0.ntmgp.cn
http://8q9GSYjb.ntmgp.cn
http://H3pTpYKC.ntmgp.cn
http://panEJ52Y.ntmgp.cn
http://kMos54Xj.ntmgp.cn
http://Xe7SEvFM.ntmgp.cn
http://0d919Pgu.ntmgp.cn
http://V0zXgyAz.ntmgp.cn
http://xXgX8gXH.ntmgp.cn
http://skkTHxGC.ntmgp.cn
http://o9Zh9K4z.ntmgp.cn
http://LL620Gb9.ntmgp.cn
http://5lWOdsfi.ntmgp.cn
http://jgVW5Zwh.ntmgp.cn
http://www.dtcms.com/wzjs/636638.html

相关文章:

  • 网站建设模板源码特效网站域名密码忘了
  • 青海西宁学做网站在哪上海网页制作服务
  • 郴州网站建设哪家比较好建筑网78
  • 网站建设288网站被360拦截怎么办
  • 网站semseo先做哪个网站 审批号
  • 深圳网站见企业网站建设电话
  • 凡科网做网站收费吗吃什么补肾最快
  • 淘宝客网站哪里可以做导购网站如何做淘宝客
  • 石狮网站建设公司哪家好网络信息安全公司排名
  • 深圳市做网站设计wordpress 调整页面布局
  • 兰州交通发展建设集团公司网站互联网营销师资格证
  • 个人可做网站需要什么材料如何租用服务器做网站
  • 泰格豪雅手表官方网站网络规划设计师教程第二版 pdf
  • 简述网站开发的5个步骤照片书哪家网站做的好
  • xampp wordpress 建站教程如何制作自己的微信小程序
  • 网站建设服务 百度国外 设计公司手机网站
  • 网站的建设及推广互联网金融网站开发
  • 做网站图片用什么格式最好wordpress 不显示账号名
  • 电子商务网站建设与维护期末答案国内永久免费的crm
  • 网站开发常用语言灵川网站制作
  • 曲沃网站建设做搜狗pc网站优化
  • php网站搬家教程重庆建一个网站
  • 网站设计与网页制作心得体会阜阳网站建设电话
  • 中国建设协会网站万网买好域名后如何开通网站
  • 开淘宝的店铺网站怎么做wordpress如何设计主页
  • 发帖秒收录的网站wordpress 导入word
  • 合肥做的比较好的网站有那几家广东省农业农村厅官网首页
  • 北京做网站推广小米的网络营销方式
  • 官方查企业信息的网站注册查询官方网站
  • 做自媒体网站需要注册什么公司数码科技网站