首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用RestHighLevelClient搜索空格分隔的字符串时没有结果(JAVA Spring-boot)

RestHighLevelClient是Elasticsearch官方提供的Java高级客户端,用于与Elasticsearch进行交互。当使用RestHighLevelClient搜索空格分隔的字符串时没有结果,可能是由于以下原因:

  1. 分词器设置不正确:Elasticsearch使用分词器将文本分成单词进行索引和搜索。默认情况下,Elasticsearch使用标准分词器,它会将文本按照空格进行分词。如果你的字符串是由空格分隔的,那么默认的分词器会将其分成多个单词进行索引。如果你想按照整个字符串进行搜索,可以使用keyword分词器或者不使用分词器。在创建索引时,可以通过设置mapping来指定字段的分词器。
  2. 查询字符串的分词方式不正确:在使用RestHighLevelClient进行搜索时,查询字符串也会被分词器处理。如果你的查询字符串是由空格分隔的,那么默认情况下,查询字符串也会被分成多个单词进行搜索。如果你想按照整个字符串进行搜索,可以使用match_phrase查询或者term查询。
  3. 索引数据不正确:如果你的数据没有正确地被索引到Elasticsearch中,那么搜索时就无法找到结果。请确保你的数据已经正确地被索引到了Elasticsearch中,并且字段的映射设置正确。

针对以上可能的原因,可以采取以下解决方案:

  1. 设置字段的分词器为keyword或者不使用分词器,确保整个字符串作为一个词进行索引和搜索。
  2. 使用match_phrase查询或者term查询,确保查询字符串按照整个字符串进行搜索。
  3. 检查数据是否正确地被索引到Elasticsearch中,并且字段的映射设置正确。

腾讯云提供了Elasticsearch服务,可以通过腾讯云Elasticsearch产品来搭建和管理Elasticsearch集群。你可以参考腾讯云Elasticsearch产品的文档和示例代码来了解如何使用RestHighLevelClient进行搜索操作。

腾讯云Elasticsearch产品介绍链接:https://cloud.tencent.com/product/es

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Elasticsearch入门与实战

Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索,只需要使用统一开发好API即可,而不需要了解其背后复杂Lucene运行原理。...没有数据丢失,因此搜索结果仍将完整。 注意:您高可用性在某种程度上会受到影响。如果更多分片消失,您可能会丢失数据。将黄色视为应该提示调查警告。...所以,不同分词器,会影响不同搜索结果 5.4.4> 复杂条件搜索 上面5.4.3中,我们查询使用了GET /student/type1/_search?...> 多个内容搜索 我们只需要根据空格分割即可。...【非操作】我们来查询名字里没有Java书籍 【结果过滤】我们来查询所有书名中有“Java”且价格在80~100之间书 g> term精确查找 我们可以利用term进行精确查找,因为它是直接通过倒排索引指定词条进行精确查找

1.1K31

ElasticSearch7.6入门学习

es也使用java开发并使用Lucene作为其核心来实现所有索引和搜索功能,但是它目的是通过简单RESTful API来隐藏Lucene复杂性,从而让全文搜索变得简单。...Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索功能,但是它目的是通过简单RESTful API来隐藏Lucene复杂性,从而让全文搜索变得简单...ElasticSearch与Solr比较 当单纯对已有数据进行搜索,Solr更快 当实时建立索引,Solr会产生io阻塞,查询性能较差,ElasticSearch具有明显优势 随着数据量增加...当我们索引一篇文档,可以通过这样顺序找到它:索引 => 类型 => 文档ID ,通过这个组合我们就能索引到某个具体文档。 注意:ID不必是整数,实际上它是个字符串。...可以多关键字查(空格隔开)— 匹配字段也是符合 match 会使用分词器解析(先分析文档,然后进行查询) 搜词 // 匹配数组 貌似不能与其它字段一起使用 // 可以多关键字查(空格隔开

1.4K10

Elasticsearch Search API之搜索模板(search Template)

所谓搜索模板,其实有点类似于SQL语句中预处理,就是对查询表达式中包含占位符来,在查询指定相应参数,这类模板,也可以预先存储在ES服务器中。...上述对应JAVA Demo代码如下: 1public static void searchBySearchTemplate() { 2 RestHighLevelClient client...EsClient.close(client); 20 } 21 } concatenating array of values {{#join}数组{{/join}}函数可用于将数组值连接为逗号分隔字符串...end参数值,如果没有,则使用默认值20。...在这里就不在过细讲解,就是在请求时候将多个请求放入一个集合中,然后返回结果也按照该顺序进行返回。对应API接口为:RestHighLevelClient#msearchTemplate。

3.4K10

ElasticSearch

es也使用java开发并使用Lucene作为其核心来实现所有索引和搜索功能,但是它目的是通过简单RESTful API来隐藏Lucene复杂性,从而让全文搜索变得简单。...Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索功能,但是它目的是通过简单RESTful API来隐藏Lucene复杂性,从而让全文搜索变得简单。...1.3.3 ElasticSearch与Solr比较 当单纯对已有数据进行搜索,Solr更快 2.当实时建立索引,Solr会产生io阻塞,查询性能较差,ElasticSearch具有明显优势...3.随着数据量增加,Solr搜索效率会变得更低,而ElasticSearch却没有明显变化 4.转变我们搜索基础设施后从Solr ElasticSearch,我们看见一个即时~ 50x提高搜索性能...当我们索引一篇文档,可以通过这样顺序找到它:索引 => 类型 => 文档ID ,通过这个组合我们就能索引到某个具体文档。 注意:ID不必是整数,实际上它是个字符串

1.8K20

01_ElasticSearch学习笔记

面对这样复杂搜索业务和数据量,使用传统数据库搜索就显得力不从心,一般我们都会使用全文检索技术。 常见全文检索技术有 Lucene、solr 、elasticsearch 等。...1.5.1 字符串类型 类型 描述 text 当一个字段是要被全文搜索,比如Email内容、产品描述,应该使用 text类型。...total:搜索总条数 max_score:所有结果中文档得分最高分 -hits:搜索结果文档对象数组,每个元素是一条搜索文档信息 _index:索引库 _type:文档类型 _id:...这是因为在 查询,会先将搜索关键字进行分词,对分词后字符串进行查询,只要是包含这些字 符串都是要被查询出来,多个词之间是 or 关系。...: TransportClient没有使用RESTful风格接口,而是二进制方式传输数据。

1.2K10

SpringBoot + ES基本项目搭建实例

搜索系列】ES基本项目搭建 之前一直没有写ES相关博文,现在开始补课,预计5-6篇博文将es使用姿势展示给各位小伙伴;本文将作为es结合springboot第一篇博文,基本项目环境搭建 <!...es文档操作姿势,相比较于封装得更好spring-boot-starter-data-elasticsearch,使用更加灵活 II....(builder); } } 注意上面的实现,用户名 + 密码并没有使用,当es设置了用户名、密码之后,是通过每次请求,在请求头基于Basic Auth方式进行身份验证;后面会介绍到 2....:xxx 下面是一个简单使用姿势 @Service public class EsTest { @Autowired private RestHighLevelClient client...://github.com/liuyueyi/spring-boot-demo 源码:https://github.com/liuyueyi/spring-boot-demo/tree/master/spring-boot

86220

使用 Elasticsearch 搭建自己搜索系统,真心强大!

原因如下: MySQL默认使用innodb引擎,底层采用b+树方式来实现,而Es底层使用倒排索引方式实现,使用倒排索引支持各种维度分词,可以掌控不同粒度搜索需求。...(MYSQL8版本也支持了全文检索,使用倒排索引实现,有兴趣可以去看看两者差别) 如果使用MySQL%key%模糊匹配来与es搜索进行比较,在8万数据量他们耗时已经达到40:1左右,毫无疑问在速度方面...Lucene封装自己搜索系统,为了适配公司营销战略、推荐系统等会有更多定制化搜索需求 es客户端选型 spring-boot-starter-data-elasticsearch 我相信你看到网上各类公开课视频或者小项目均推荐使用这款...,搜索最大分词,例如"Java知音"索引时分词包含Java、知音、音、知等,最小粒度分词可以让我们匹配更多检索需求,但是我们搜索应该设置最大分词,用“Java”和“知音”去匹配索引库,得到结果更贴近我们目的...Java 创建对象 6 种方式 阿里为什么推荐使用 LongAdder? 新来一个技术总监:禁止戴耳机写代码。。 重磅!

1.1K20

【从入门到精通,教你如何安装ElasticSearch】Linux版本

ES也使用Java开发并使用Lucene作为核心来实现所有索引和搜索功能,但是它目的是通过简单RESTful API来隐藏Lucene复杂性,从而让全文检索变得简单。...# Java开发,elasticsearch版本和我们之后对应Java核心包!版本对应!...当我们索引一篇文档,可以通过这样一个序列找到它: 索引>类型>文档ID,通过这个组合我们就能索引到某个具体文档。注意:ID不必是整数,实际上它是个字符串!...搜索过程: 当用户输入任意词条,首先对用户输入数据进行分词,得到用户要搜索所有词条,然后拿着这些词条去倒排索引列表中进行匹配。找到这些词条就能找到包含这些词条所有文档编号。...} }], "filter": { "range": { "age": { "gt": 19 } } } } } } # 7、多条件使用空格隔开

45240

Spring Boot整合分布式搜索引擎ElasticSearch 实现相关基本操作

它能很方便使大量数据具有搜索、分析和探索能力。充分利用Elasticsearch水平伸缩性,能使数据在生产环境变得更有价值。...Elasticsearch 实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候...() 返回是Map集合 System.out.println(getResponse.getSourceAsString());//获取响应结果source中内容,转化为字符串 } /**...如果添加不指定文档ID,他就会随机生成一个ID,ID唯一。 创建文档若该ID已存在,发送创建文档请求后会更新文档中数据。...hasFailures()方法是返回是否失败,即它值为false说明上传成功 elasticsearch很消耗内存,极力推荐使用docker部署运行

52930

SpringBoot集成ElasticSearch,实现模糊查询,批量CRUD,排序,分页,高亮...

创建文档若该ID已存在,发送创建文档请求后会更新文档中数据。...) 返回是Map集合 System.out.println(getResponse.getSourceAsString());//获取响应结果source中内容,转化为字符串  }更新文档数据:注意:...}3.批量CRUD数据这里只列出了批量插入数据,其他与此类似注意:hasFailures()方法是返回是否失败,即它值为false说明上传成功@Testvoid testBulkAddUser() ...中含有Java sourceBuilder.query(QueryBuilders.multiMatchQuery("java","name")); //3.分页查询 sourceBuilder.from... --> 设置请求(添加规则,添加数据等) --> 执行对应方法(传入请求,默认请求选项)–> 接收响应结果(执行方法返回值)–> 输出响应结果中需要数据(source,status等)2.注意事项如果不指定

18010

Spring Boot从零入门7_最新配置文件配置及优先级详细介绍

Spring Boot对参数重写(覆盖)有一个顺序,这是我们需要注意,这里概况如下: 当使用了Devtools,$HOME/.config/spring-boot文件夹中Devtools全局设置属性...yml格式中一定不要用制表符tab,冒号和值之间一定要有空格 一定要有空格 一定要有空格 yml双引号不会转义字符串里面的特殊字符,特殊字符按本身功能输出,比如 yml单引号会转义字符串里面的特殊字符...还可以使用spring.config.location环境属性(目录位置或文件路径逗号分隔列表)指定配置文件位置。...配置了两个:dev和prod,并且在dev中使用了内嵌Tomcat,而 prod 中没有(这种配置场景如生产环境下使用外部Tomcat,开发使用内部Tomcat)。.../test/java使用): @ActiveProfiles("dev") 3.6.5 YML特殊方式 YAML文件实际上可以是由---行分隔一系列文档,每个文档被分别解析为一个展开配置映射。

75320

【ES三周年】万字长文带你实战 Elasticsearch 搜索

这次我们来讲下 Spring Boot 中如何整合 ES,以及如何在 Spring Cloud 微服务项目中使用 ES 来实现全文检索,来达到搜索题库功能。...而我们使用数据库,如 Mysql,MongoDB 对文本信息检索能力特别是中文检索并没有 ES 强大。所以我们来看下 ES 在项目中是如何来代替 SQL 来工作。...期望结果是一个 RestHighLevelClient 对象。...users 索引在我 ES 中是没有记录,所以期望结果是 ES 中新增了一条 users 数据。 /** * 测试存储数据到 ES。...非常详细地讲解了每一步该如何做,相信通过阅读本篇后,再加上自己实践,一定能掌握前后端该如何使用 ES 来达到高效搜索目的。

2.3K104

【ES三周年】分布式搜索索引elasticsearch快速入门

当数据量达到数百万,就是一场灾难。1.2.2.倒排索引图片倒排索引中有两个非常重要概念:文档(Document):用来搜索数据,其中每一条数据就是一个文档。...,使用mysql实现对查询性能要求较高搜索需求,使用elasticsearch实现两者再基于某种方式,实现数据同步,保证一致性图片2.索引库操作索引库就类似数据库表,mapping映射就类似表结构...:类型为字符串,但是不需要分词,因此是keyword;不参与搜索,因此需要index为false;无需分词器score:虽然是数组,但是我们只看元素类型,类型为float;参与搜索,因此需要index...name.lastName;类型为字符串,但是不需要分词,因此是keyword;参与搜索,因此需要index为true;无需分词器2.2.索引库CRUD这里我们统一使用Kibana编写DSL方式来演示...调用RestHighLevelClient#.xxx()方法,xxx是index、get、update、delete、bulk解析结果(Get需要)

1.2K50

大数据ELK(十四):Elasticsearch编程(基本操作)

将ES响应数据转换为JSON字符串使用FastJSON将JSON字符串转换为JobDetail类对象记得:单独设置ID参考代码:@Overridepublic JobDetail findById(...发起请求遍历结果获取命中结果将JSON字符串转换为对象使用SearchHit.getId设置文档ID参考代码:@Overridepublic List searchByKeywords...RestHighLevelClient.search发起请求遍历结果获取命中结果将JSON字符串转换为对象使用SearchHit.getId设置文档ID将结果封装到Map结构中(带有分页信息)total...-> 当前分页中数据scollId不为空:用之前查询出来scrollId,构建SearchScrollRequest请求设置scroll查询结果有效时间使用RestHighLevelClient...,并替换掉原先没有高亮结果 获取高亮字段 获取title高亮字段获取jd高亮字段将高亮字段进行替换普通字段 处理title高亮,判断高亮是否为空,不为空则将高亮碎片拼接在一起替换原有普通字段参考代码

85021

Elasticsearch硬核入门教程(2022最全)

基于以上原因可以分析得出,在一些生产环境中,使用常规搜索方式,性能是非常差搜索数据对象是大量非结构化文本数据。 文件记录量达到数十万或数百万个甚至更多。 支持大量基于交互式文本查询。...需求非常灵活全文搜索查询。 对高度相关搜索结果有特殊需求,但是没有可用关系数据库可以满足。 对不同记录类型、非文本数据操作或安全事务处理需求相对较少情况。...#elasticsearch Elasticsearch 分为 Linux 和 WindowWindows版本,基于我们主要学习是 ElasticElasticsearch Java客户端使用,...打开浏览器(推荐使用谷歌浏览器),输入地址:http://localhost:9200 ,测试结果 3、问题解决 ElasticSearch 是使用 java 开发,且 7.13.2版本 ES 需要...JDK 版本 1.8 以上,默认安装包带有 jdk 环境,如果系统配置 JAVA_HOME ,那么使用系统默认 JDK ,如果没有配置使用自带 JDK ,一般建议使用系统配置 JDK 。

1.8K32

Elasticsearch报错:exception

(RestHighLevelClient.java:1467) at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java...... 4 more 这个原因是因为我分组聚合查询字符串(content_type)类型是text类型 ?...原因分析: 当使用到term 查询时候,由于是精准匹配,所以查询关键字在es上类型,必须是keyword而不能是text,比如你搜索条件是 ”name”:”蔡虚坤”,那么该name 字段es类型得是...keyword,而不能是text 在es中,只有keyword类型字符串可以使用AggregationBuilders.terms("aggs-class")来分组聚合,想要分组查询,指定根据分组字段...在我们Java代码中怎么修改呢?如下,加上".keyword"就可以了 ? 之前报错下面追加上: ? ?

11.5K20

ElasticSearch7.6

es也使用java开发并使用Lucene复杂性,从而让全文检索变得简单 据国际权威数据库产品评测机构DB Engines统计,2016年1月,ElasticSearch已超过solr等成为排名第一搜索引擎类应用...想要使用它,你必须使用java作为开发语言并将其直接集成到你应用中,更糟糕是,Lucene非常复杂,你需要更深入了解检索相关知识来理解它是如何工作。...ElasticSearch也使用java开发并使用Lucene作为其核心来实现所有索引和功能,但是它目的是通过简单RESTful API来隐藏Lucene复杂性,从而让全文检索变得简单 Solr简介...等格式查询结果进行解析,组织页面布局、solr不提供构建UI功能,solr提供了一个管理界面,通过管理界面可以对查询solr配置和运行情况 Solr是一个开源搜索平台,用于构建搜索应用程序。...Lucene简介 Lucene 是一个基于 Java 全文信息检索工具包,它不是一个完整搜索应用程序,而是为你应用程序提供索引和搜索功能一个开源框架。

19010

SpringBoot集成ES-6.8

,我们也会创建type及其映射关系,但是这些操作不建议使用Java客户端完成,原因如下索引库和映射往往是初始化时完成,不需要频繁操作,不如提前配置好官方提供创建索引库及映射API非常繁琐,需要通过字符串拼接...,不分词,可以使用keyword类型title:商品标题,搜索字段,需要分词,可以用text类型category:商品分类,这个是整体,不分词,可以使用keyword类型brand:品牌,与分类类似,不分词...,可以使用keyword类型price:价格,这个是double类型images:图片,用来展示字段,不搜索,index为false,不分词,可以使用keyword类型我们可以编写这样映射配置PUT...新增,如果传递id是已经存在,则会完成修改操作,如果不存在,则是新增准备需要保存到索引库Json文档数据创建IndexRequest请求对象,指定索引库、类型、id(可选)调用source方法将请求数据封装到...我们如果要使用各种不同查询,其实仅仅是传递给sourceBuilder.query()方法参数不同而已。

25110
领券