protected QueryBuilder getQueryBuilder(final SearchCriteria searchCriteria) { QueryBuilder matchQueryBuilder = null; final String queryString = searchCriteria.getQuery(); if (StringUtils.isBlank(queryString)) { matchQueryBuilder = QueryBuilders.matchAllQuery(); } else { final String filterSpecialCharsQueryString = escapeQueryChars(queryString); final QueryStringQueryBuilder queryStringQueryBuilder = QueryBuilders .queryString(filterSpecialCharsQueryString); // Add fields queryStringQueryBuilder.field( SearchDocumentFieldName.TITLE.getFieldName(), (float) 0.5) .field(SearchDocumentFieldName.DESCRIPTION.getFieldName(), (float) 0.15); for (final String contentCategoryFieldName : SearchFacetName.categoryFacetFields) { queryStringQueryBuilder.field( SearchDocumentFieldName.CATEGORIES_ARRAY.getFieldName() + "." + contentCategoryFieldName, 1); } matchQueryBuilder = queryStringQueryBuilder; } if (searchCriteria.isUseBoostingFactor()) { final FunctionScoreQueryBuilder queryBuilder = new FunctionScoreQueryBuilder( matchQueryBuilder); final ScoreFunctionBuilder scoreFunctionBuilder = new ScriptScoreFunctionBuilder() .script(SearchDocumentFieldName .getCalculatedScoreScriptForBostFactor()); queryBuilder.add(scoreFunctionBuilder); return queryBuilder; } return matchQueryBuilder; }
{ "query" : { "function_score" : { "query" : { "bool" : { "should" : { "query_string" : { "query" : "卫衣", "default_field" : "cnGoodsName" } } } }, "functions" : [ { "field_value_factor" : { "field" : "pid", "factor" : 2.0, "modifier" : "log1p" } } ] } } }
_search?explain=true
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html
http://www.programcreek.com/java-api-examples/index.php?api=org.elasticsearch.index.query.functionscore.script.ScriptScoreFunctionBuilder
相关推荐
在构建一个基于Java8的SSM(Spring、SpringMVC、MyBatis)+Elasticsearch的个人博客系统中,我们需要掌握多个核心技术点。这里,我们将深入探讨如何整合这些技术来实现一个高效的全文检索功能。 首先,让我们了解...
Elasticsearch(以下简称ES)是当前最流行的搜索引擎之一,本文旨在通过对ES的基本操作和查询语法的介绍,帮助读者快速入门和精通ES。 批量操作 ES提供了多种批量操作方式,包括通过GET _mget、GET 索引/_mget、GET ...
- **实现方法**:详细解释了如何在Solr与Elasticsearch中配置多字段搜索,包括如何设置权重、如何处理不同字段间的相互作用等。 - **案例研究**:通过具体案例来演示多字段搜索的优势和注意事项。 6. **基于术语...
1. **Easy-Es**:这是一个简化 Elasticsearch 操作的工具,支持自定义排序、权重和原生查询,提供了更多的定制空间。 2. **es-client**:开源的可视化工具,提供数据浏览、查询、索引过滤等功能,支持多集群连接,且...
**Elasticsearch 8.x 向量搜索使用详解** Elasticsearch 8.x 版本引入了对向量搜索的支持,这使得它能够处理非结构化的数据,如图像、文本和语音的语义搜索。向量搜索是通过将数据转换为高维向量并进行相似度比较来...
**Elasticsearch 5.6 官方文档详解** Elasticsearch是一款强大的开源搜索引擎,以其分布式、实时、可扩展的特性被广泛应用于日志分析、信息检索、网站搜索等多种场景。5.6版本是Elasticsearch的一个稳定版本,提供...
dynamic设置也是Elasticsearch索引管理中的一个重要方面,它可以动态添加字段。 SpringBoot集成部分,则涉及到如何将Elasticsearch集成到SpringBoot项目中,这里会涉及到POM文件配置、yml配置文件配置以及核心操作...
Elasticsearch(ES)是一种基于Lucene的分布式、RESTful搜索和分析引擎,常用于构建实时的全文检索、数据分析和信息存储系统。它的设计目标是简单、可扩展和高性能,适用于大数据环境。作为分布式搜索解决方案,ES...
此外,Elasticsearch的术语还包含如Term(术语)、Field(字段)、Document(文档)、Index(索引)、Shard(分片)、Replica(副本)、Routing(路由)等,它们共同构成了Elasticsearch体系结构的基础。 在安装和...
Elasticsearch默认提供了多种排序方式,如字段排序、评分排序等。然而,在实际应用中,我们可能需要根据更复杂的场景进行排序,例如,基于多个字段的组合权重、动态计算的值或者实时的外部数据。这时,SortScript就...
Elasticsearch的核心原理包括数据提交、分词处理、权重分配、存储、搜索和结果展示等步骤。 Elasticsearch还是Elastic Stack(前ELK Stack)的一部分,该Stack包括Elasticsearch、Logstash和Kibana三个主要组件。...
Elasticsearch支持多种字段类型,如字符串(String)、整型(Integer)、日期(Date)等,每种类型都有特定的应用场景。 ##### 3.3 数组与多字段(Array and Multi-Fields) - **数组(Array)**:允许在一个字段中存储多个值...
Elasticsearch 分析插件 IK (Inverted Index) 是一个为中文处理而设计的强大分词器,常用于Spring Data Elasticsearch项目中,以实现高效的全文检索功能。IK分词器能够智能地对中文文本进行切词,提高搜索引擎的精确...
- **概念理解**:在Elasticsearch中,可以使用Boost机制为特定字段或查询增加权重,从而影响最终的搜索结果排序。这对于需要对某些关键词进行特殊强调的应用场景非常有用。 - **实现方式**:通过在查询语句中加入`...
### 掌握ElasticSearch 5.0:深入理解与应用 #### 一、ElasticSearch与Lucene概述 **1. Lucene简介** - **Lucene**是Apache下的一个开源全文检索库,它是ElasticSearch的核心组件之一。 - **深入Lucene索引机制*...
Elasticsearch(简称ES)是一款强大的开源搜索和分析引擎,基于Apache Lucene构建,适用于分布式环境。它提供了实时、稳定、可靠的搜索和数据分析能力,广泛应用于企业级搜索解决方案中。以下是关于Elasticsearch的...
《Luence和ElasticSearch面试准备》 Lucene和ElasticSearch是两个在全文搜索引擎领域中广泛使用的开源工具。Lucene是一个高性能、全文本搜索库,而Elasticsearch则是在Lucene的基础上构建的一个分布式、RESTful风格...
**Elasticsearch 高级应用详解** 在大数据时代,Elasticsearch 作为一款强大的搜索引擎,因其高效全文检索、实时分析及大数据处理能力而备受青睐。本笔记主要涵盖以下几个核心知识点: 1. **结构化搜索实战**: -...
在电商搜索业务中,Elasticsearch 是一种广泛使用的搜索引擎,用于快速、高效地处理大量数据。以下是关于电商搜索业务及Elasticsearch应用的详细知识点: 1. **价格与促销**: - 索引结构设计应考虑到价格维度,...
连接到ElasticSearch Server:提及正在运行ES的主机和端口(10.240.0.251:9200),然后按connect按钮。 构建查询:连接到服务器后,它将在可用的“索引和文档”下拉列表中列出所有索引及其对应的文档。 选择要为其...