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

德阳网站设计wordpress新建留言板

德阳网站设计,wordpress新建留言板,汇编语言做网站,那个公司做的外贸网站好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.hkea.cn/news/14355507/

相关文章:

  • 做网站功能双线网站选服务器
  • 南阳市建设局网站推广公司赚钱吗
  • asp网站下用php栏目深圳seo优化关键词排名
  • 怎么做一个电商网站吗附近编程培训机构
  • 供需网站开发建设网站需要备案么
  • 发布消息做任务的网站从网页上直接下载视频
  • 开网店需要自己做网站吗网页设计与制作课件张松炎
  • 公司网站建设哪儿济南兴田德润实惠吗下载类网站做多久才有流量
  • 库尔勒北京网站建设建设电商平台方案
  • 城乡与建设部网站首页网站建设专家
  • 安宁网站建设 熊掌号代运营公司
  • wordpress中怎么去掉默认页面模板中的评论框久久seo综合查询
  • 怀化网站建设设计网络营销与直播电商专业专升本
  • 如何做企业网站后台管理制作网站的公司做网站去哪里找
  • 沧州网站建设公司翼马wordpress 最强插件
  • 南雄做网站用logo做ppt模板下载网站
  • 运营公众号还是做网站郑州有哪些搞网站开发的公司
  • 淮南网站seo济宁任城区建设局网站
  • jsp做的网站怎嘛用wordpress朗读功能
  • 简述网站开发设计流程图学风建设网站版块
  • 制作空间主页网站网站建设哪里最好
  • c网站开发教程做app好还是响应式网站
  • 惠州专门做网站网站为什么要做seo
  • 河北网站设计成功柚米科技正规网站建设空间哪个好
  • 网站空间建站wordpress 默认首页
  • 国内有什么网站wordpress仿微博发文插件
  • 网站链接结构wordpress大学 插件
  • 滦南网站建设wordpress可以用火车头采集
  • 网站建设速成班网站建设3000字
  • 做一个网站成本大概多少钱好的作文网站