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

市北建筑建网站哪家好深圳市企业网站建设

市北建筑建网站哪家好,深圳市企业网站建设,营销导向的网站建设的主要流程,厦门集团网站设计公司Elasticsearch 提供了多种查询类型#xff0c;每种查询类型适用于不同的搜索场景。以下是八种常见的 Elasticsearch 查询类型及其详细说明和示例。 1. Match Query 用途#xff1a;用于全文搜索#xff0c;会对输入的文本进行分词#xff0c;并在索引中的字段中查找这些分…Elasticsearch 提供了多种查询类型每种查询类型适用于不同的搜索场景。以下是八种常见的 Elasticsearch 查询类型及其详细说明和示例。 1. Match Query 用途用于全文搜索会对输入的文本进行分词并在索引中的字段中查找这些分词。 特点支持模糊匹配、短语匹配等。 示例 json GET /my_index/_search {query: {match: {content: quick brown fox}} } 2. Term Query 用途用于精确匹配不会对输入的文本进行分词。 特点适用于关键词、ID 等不需要分词的情况。 示例 json GET /my_index/_search {query: {term: {status: active}} } 3. Terms Query 用途用于在一个字段上匹配多个值。 特点类似于 SQL 中的 IN 操作符。 示例 json GET /my_index/_search {query: {terms: {tags: [news, sports]}} } 4. Range Query 用途用于范围查询可以指定数值或日期范围。 特点适用于数值型字段和日期字段。 示例 json GET /my_index/_search {query: {range: {age: {gte: 18,lte: 30}}} } 5. Bool Query 用途组合多个查询条件支持 must必须满足、should应该满足、must_not必须不满足和 filter过滤子句。 特点灵活性高可以构建复杂的查询逻辑。 示例 json GET /my_index/_search {query: {bool: {must: [{ match: { title: Elasticsearch } },{ range: { date: { gte: now-1y/d }}}],filter: [{ term: { status: published }}]}} } 6. Wildcard Query 用途使用通配符进行匹配。 特点支持 * 和 ? 通配符但性能较差应谨慎使用。 示例 json GET /my_index/_search {query: {wildcard: {name: joh*}} } 7. Fuzzy Query 用途用于近似匹配允许一定数量的拼写错误。 特点适用于拼写错误较多的搜索场景。 示例 GET /my_index/_search {query: {fuzzy: {username: {value: kenneth,fuzziness: AUTO}}} } 8. Match Phrase Query 用途用于精确匹配整个短语。 特点不会对短语进行分词要求短语完全一致。 示例 json GET /my_index/_search {query: {match_phrase: {description: Elasticsearch search engine}} } 总结 每种查询类型都有其特定的应用场景和优缺点 Match Query适合全文搜索。Term Query适合精确匹配。Terms Query适合多值匹配。Range Query适合范围查询。Bool Query适合复杂查询逻辑。Wildcard Query适合通配符匹配性能较低。Fuzzy Query适合拼写错误匹配。Match Phrase Query适合精确短语匹配。 通过合理选择和组合这些查询类型可以实现高效且灵活的搜索功能。 参考资料 Elasticsearch 官方文档Elasticsearch 查询 DSL 指南 这些资源提供了更多关于 Elasticsearch 查询类型的详细信息和示例帮助你更好地理解和使用这些查询 为了实现八种 Elasticsearch 查询类型并在 Web 前端展示结果我们可以使用 Spring Boot 构建后端服务并使用 Thymeleaf 作为模板引擎来构建前端页面。以下是一个完整的示例展示如何实现这八种查询类型并将结果显示在 Web 前端。 项目结构 spring-boot-elasticsearch-demo/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ ├── controller/ │ │ │ │ └── SearchController.java │ │ │ ├── model/ │ │ │ │ └── Document.java │ │ │ ├── repository/ │ │ │ │ └── DocumentRepository.java │ │ │ ├── service/ │ │ │ │ └── SearchService.java │ │ │ └── SpringBootElasticsearchDemoApplication.java │ │ └── resources/ │ │ ├── application.yml │ │ ├── static/ │ │ └── templates/ │ │ └── search.html ├── pom.xml 1. 添加依赖 在 pom.xml 中添加必要的依赖 xml dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-elasticsearch/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactIdversion7.6.2/version/dependency /dependencies 2. 配置文件 在 src/main/resources/application.yml 中配置 Elasticsearch 连接信息 yaml spring:elasticsearch:rest:uris: http://localhost:9200server:port: 8080 3. 实体类 创建一个实体类 Document.java 表示索引中的文档 java package com.example.model;import lombok.Data; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType;Data Document(indexName documents) public class Document {Idprivate String id;Field(type FieldType.Text)private String title;Field(type FieldType.Text)private String content;Field(type FieldType.Integer)private Integer age;Field(type FieldType.Date)private String date;Field(type FieldType.Keyword)private String status;Field(type FieldType.Keyword)private String[] tags;Field(type FieldType.Keyword)private String username; } 4. Repository 接口 创建一个 Repository 接口 DocumentRepository.java java package com.example.repository;import com.example.model.Document; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;public interface DocumentRepository extends ElasticsearchRepositoryDocument, String { } 5. Service 层 创建一个 Service 类 SearchService.java 来处理各种查询逻辑 java package com.example.service;import com.example.model.Document; import com.example.repository.DocumentRepository; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.index.query.*; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.sort.SortOrder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map;Service public class SearchService {Autowiredprivate RestHighLevelClient client;public ListDocument matchQuery(String field, String query) throws IOException {SearchRequest searchRequest new SearchRequest(documents);SearchSourceBuilder sourceBuilder new SearchSourceBuilder();MatchQueryBuilder matchQueryBuilder QueryBuilders.matchQuery(field, query);sourceBuilder.query(matchQueryBuilder);searchRequest.source(sourceBuilder);SearchResponse searchResponse client.search(searchRequest, RequestOptions.DEFAULT);return getDocumentsFromResponse(searchResponse);}public ListDocument termQuery(String field, String value) throws IOException {SearchRequest searchRequest new SearchRequest(documents);SearchSourceBuilder sourceBuilder new SearchSourceBuilder();TermQueryBuilder termQueryBuilder QueryBuilders.termQuery(field, value);sourceBuilder.query(termQueryBuilder);searchRequest.source(sourceBuilder);SearchResponse searchResponse client.search(searchRequest, RequestOptions.DEFAULT);return getDocumentsFromResponse(searchResponse);}public ListDocument termsQuery(String field, ListString values) throws IOException {SearchRequest searchRequest new SearchRequest(documents);SearchSourceBuilder sourceBuilder new SearchSourceBuilder();TermsQueryBuilder termsQueryBuilder QueryBuilders.termsQuery(field, values);sourceBuilder.query(termsQueryBuilder);searchRequest.source(sourceBuilder);SearchResponse searchResponse client.search(searchRequest, RequestOptions.DEFAULT);return getDocumentsFromResponse(searchResponse);}public ListDocument rangeQuery(String field, Object gte, Object lte) throws IOException {SearchRequest searchRequest new SearchRequest(documents);SearchSourceBuilder sourceBuilder new SearchSourceBuilder();RangeQueryBuilder rangeQueryBuilder QueryBuilders.rangeQuery(field).gte(gte).lte(lte);sourceBuilder.query(rangeQueryBuilder);searchRequest.source(sourceBuilder);SearchResponse searchResponse client.search(searchRequest, RequestOptions.DEFAULT);return getDocumentsFromResponse(searchResponse);}public ListDocument boolQuery(MapString, Object mustQueries, MapString, Object shouldQueries, MapString, Object mustNotQueries) throws IOException {SearchRequest searchRequest new SearchRequest(documents);SearchSourceBuilder sourceBuilder new SearchSourceBuilder();BoolQueryBuilder boolQueryBuilder QueryBuilders.boolQuery();if (mustQueries ! null) {for (Map.EntryString, Object entry : mustQueries.entrySet()) {boolQueryBuilder.must(QueryBuilders.matchQuery(entry.getKey(), entry.getValue()));}}if (shouldQueries ! null) {for (Map.EntryString, Object entry : shouldQueries.entrySet()) {boolQueryBuilder.should(QueryBuilders.matchQuery(entry.getKey(), entry.getValue()));}}if (mustNotQueries ! null) {for (Map.EntryString, Object entry : mustNotQueries.entrySet()) {boolQueryBuilder.mustNot(QueryBuilders.matchQuery(entry.getKey(), entry.getValue()));}}sourceBuilder.query(boolQueryBuilder);searchRequest.source(sourceBuilder);SearchResponse searchResponse client.search(searchRequest, RequestOptions.DEFAULT);return getDocumentsFromResponse(searchResponse);}public ListDocument wildcardQuery(String field, String value) throws IOException {SearchRequest searchRequest new SearchRequest(documents);SearchSourceBuilder sourceBuilder new SearchSourceBuilder();WildcardQueryBuilder wildcardQueryBuilder QueryBuilders.wildcardQuery(field, value);sourceBuilder.query(wildcardQueryBuilder);searchRequest.source(sourceBuilder);SearchResponse searchResponse client.search(searchRequest, RequestOptions.DEFAULT);return getDocumentsFromResponse(searchResponse);}public ListDocument fuzzyQuery(String field, String value) throws IOException {SearchRequest searchRequest new SearchRequest(documents);SearchSourceBuilder sourceBuilder new SearchSourceBuilder();FuzzyQueryBuilder fuzzyQueryBuilder QueryBuilders.fuzzyQuery(field, value);sourceBuilder.query(fuzzyQueryBuilder);searchRequest.source(sourceBuilder);SearchResponse searchResponse client.search(searchRequest, RequestOptions.DEFAULT);return getDocumentsFromResponse(searchResponse);}public ListDocument matchPhraseQuery(String field, String phrase) throws IOException {SearchRequest searchRequest new SearchRequest(documents);SearchSourceBuilder sourceBuilder new SearchSourceBuilder();MatchPhraseQueryBuilder matchPhraseQueryBuilder QueryBuilders.matchPhraseQuery(field, phrase);sourceBuilder.query(matchPhraseQueryBuilder);searchRequest.source(sourceBuilder);SearchResponse searchResponse client.search(searchRequest, RequestOptions.DEFAULT);return getDocumentsFromResponse(searchResponse);}private ListDocument getDocumentsFromResponse(SearchResponse searchResponse) {ListDocument documents new ArrayList();searchResponse.getHits().forEach(hit - {Document document new Document();document.setId(hit.getId());document.setTitle((String) hit.getSourceAsMap().get(title));document.setContent((String) hit.getSourceAsMap().get(content));document.setAge((Integer) hit.getSourceAsMap().get(age));document.setDate((String) hit.getSourceAsMap().get(date));document.setStatus((String) hit.getSourceAsMap().get(status));document.setTags((String[]) hit.getSourceAsMap().get(tags));document.setUsername((String) hit.getSourceAsMap().get(username));documents.add(document);});return documents;} } 6. Controller 层 创建一个 Controller 类 SearchController.java 来处理 HTTP 请求并返回结果 java package com.example.controller;import com.example.model.Document; import com.example.service.SearchService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam;import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map;Controller public class SearchController {Autowiredprivate SearchService searchService;GetMapping(/search)public String search(RequestParam(required false) String queryType,RequestParam(required false) String field,RequestParam(required false) String query,RequestParam(required false) String value,RequestParam(required false) String gte,RequestParam(required false) String lte,RequestParam(required false) String[] values,Model model) throws IOException {ListDocument results null;switch (queryType) {case match:results searchService.matchQuery(field, query);break;case term:results searchService.termQuery(field, value);break;case terms:results searchService.termsQuery(field, List.of(values));break;case range:results searchService.rangeQuery(field, gte, lte);break;case bool:MapString, Object mustQueries new HashMap();MapString, Object shouldQueries new HashMap();MapString, Object mustNotQueries new HashMap();if (field ! null query ! null) {mustQueries.put(field, query);}results searchService.boolQuery(mustQueries, shouldQueries, mustNotQueries);break;case wildcard:results searchService.wildcardQuery(field, value);break;case fuzzy:results searchService.fuzzyQuery(field, value);break;case match_phrase:results searchService.matchPhraseQuery(field, query);break;default:// Handle default case or throw an exceptionbreak;}model.addAttribute(results, results);return search;} } 7. 前端页面 创建一个 Thymeleaf 模板 search.html 来展示搜索结果 html !DOCTYPE html html xmlns:thhttp://www.thymeleaf.org headmeta charsetUTF-8titleElasticsearch Queries/titlelink relstylesheet hrefhttps://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css /head body div classcontainer mt-5h1Elasticsearch Queries/h1form methodget action/searchdiv classform-grouplabel forqueryTypeQuery Type:/labelselect classform-control idqueryType namequeryTypeoption valuematchMatch/optionoption valuetermTerm/optionoption valuetermsTerms/optionoption valuerangeRange/optionoption valueboolBool/optionoption valuewildcardWildcard/optionoption valuefuzzyFuzzy/optionoption valuematch_phraseMatch Phrase/option/select/divdiv classform-grouplabel forfieldField:/labelinput typetext classform-control idfield namefield/divdiv classform-grouplabel forqueryQuery:/labelinput typetext classform-control idquery namequery/divdiv classform-grouplabel forvalueValue:/labelinput typetext classform-control idvalue namevalue/divdiv classform-grouplabel forgteGTE:/labelinput typetext classform-control idgte namegte/divdiv classform-grouplabel forlteLTE:/labelinput typetext classform-control idlte namelte/divdiv classform-grouplabel forvaluesValues (comma separated):/labelinput typetext classform-control idvalues namevalues/divbutton typesubmit classbtn btn-primarySearch/button/formhrh2Results:/h2table classtable table-stripedtheadtrthID/ththTitle/ththContent/ththAge/ththDate/ththStatus/ththTags/ththUsername/th/tr/theadtbodytr th:eachdocument : ${results}td th:text${document.id}/tdtd th:text${document.title}/tdtd th:text${document.content}/tdtd th:text${document.age}/tdtd th:text${document.date}/tdtd th:text${document.status}/tdtd th:text${#strings.arrayJoin(document.tags, , )}/tdtd th:text${document.username}/td/tr/tbody/table /div /body /html 8. 启动类 创建启动类 SpringBootElasticsearchDemoApplication.java java package com.example;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class SpringBootElasticsearchDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringBootElasticsearchDemoApplication.class, args);} } 9. 测试数据 确保 Elasticsearch 中有一些测试数据以便进行查询。你可以使用 Kibana 或 curl 命令插入一些文档到 documents 索引中。 示例文档 json POST /documents/_doc/1 {title: Introduction to Elasticsearch,content: Elasticsearch is a distributed, RESTful search and analytics engine.,age: 5,date: 2023-01-01,status: published,tags: [elasticsearch, search],username: john_doe }POST /documents/_doc/2 {title: Advanced Elasticsearch Techniques,content: Learn advanced techniques in Elasticsearch for better performance.,age: 3,date: 2023-06-15,status: draft,tags: [elasticsearch, advanced],username: jane_smith } 10. 运行项目 启动 Elasticsearch确保 Elasticsearch 服务器正在运行。插入测试数据使用上述示例文档插入测试数据。启动 Spring Boot 应用 bash ./mvnw spring-boot:run 4.访问应用打开浏览器访问 http://localhost:8080/search。 使用说明 在前端页面中可以选择不同的查询类型并输入相应的参数点击“Search”按钮即可查看查询结果。以下是每种查询类型的示例参数 Match Query Query Type: matchField: contentQuery: introduction Term Query Query Type: termField: statusValue: published Terms Query Query Type: termsField: tagsValues: elasticsearch,search Range Query Query Type: rangeField: ageGTE: 1LTE: 5 Bool Query Query Type: boolField: statusQuery: published Wildcard Query Query Type: wildcardField: usernameValue: john* Fuzzy Query Query Type: fuzzyField: usernameValue: jon_doe Match Phrase Query Query Type: match_phraseField: titleQuery: Introduction to Elasticsearch 通过这种方式你可以在 Web 前端展示和测试八种常见的 Elasticsearch 查询类型。
http://www.w-s-a.com/news/848610/

相关文章:

  • 程序员不是做网站的公司装修效果全景图
  • 桥东区住房和建设局网站怎么做网上问卷
  • 做期货要看哪些网站伪装的福祉 wordpress
  • 做网站需要多少费用网站建设需要懂什么语言
  • 网站手机端做app开发商城设计方案
  • 在建设厅网站上查询注销建造师查域名是否注册
  • 企业网站推广方案策划公司网站在国外打开很慢使用cdn好还是国外租用服务器好
  • 龙华o2o网站建设百度不收录什么网站吗
  • 模板搭建网站百度信息流推广
  • 移动端网站制作模板自己做的网站点击赚钱
  • 网站站长如何赚钱wordpress抓取别人网站
  • 做网站媒体专门做产品定制的网站
  • 公司企业网站建设步骤免费asp网站模板
  • 台州企业网站搭建价格做留言的网站
  • 西安网站建设q.479185700強高端网站设计定制公司
  • 网站设计是平面设计吗音频文件放到网站空间里生成链接怎么做
  • seo是对网站进行什么优化可以在哪些网站做翻译兼职
  • 南宁seo网站推广服务网站建设客户分析
  • 网站属于什么公司甜品售卖网站网页设计
  • 如何在宝塔中安装wordpressseo1888网站建设
  • 网站系统cms湖南平台网站建设制作
  • 美团网站怎么做未备案网站加速
  • 通用cms网站wordpress可以商用
  • 阳江网络问政平台 周报济南seo公司案例
  • 重庆聚百思网站开发网络市场调研
  • seo工具共享网站敬请期待的英语
  • 最好看免费观看高清大全中国移动网络优化做什么的
  • 网站开发的步骤医院网站建设细节
  • 阿雷网站建设wordpress lucene
  • seo做多个网站建筑公司企业标语