首页
学习
活动
专区
工具
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.2K31

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.6K10

    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.9K20

    从入门到实战学习ES

    常用的客户端有RestHighLevelClient和Elasticsearch Java API Client。...协调节点(Coordinating Node):负责接收客户端的请求,并将请求转发到相应的数据节点上,最后汇总各个节点的响应结果返回给客户端。...主分片负责数据的读写操作,副本分片提供数据的冗余和读请求服务。当某个节点出现故障时,副本分片可以自动接管主分片的工作,确保数据的可靠性和可用性。...在搜索时,Elasticsearch会根据查询条件在倒排索引中查找匹配的文档列表,并计算每个文档的相关性得分,最后按照得分排序返回结果。...不进行小写化、去除标点符号等处理,可能影响搜索结果。7.2.3 空白分词器优点:分词规则简单明了,易于理解。缺点:分词效果不佳,可能产生大量无意义的词项。不适用于需要精细分词的场景。

    43632

    后端工程师面试---ES深入讲解

    常用的客户端有RestHighLevelClient和Elasticsearch Java API Client。...协调节点(Coordinating Node):负责接收客户端的请求,并将请求转发到相应的数据节点上,最后汇总各个节点的响应结果返回给客户端。...主分片负责数据的读写操作,副本分片提供数据的冗余和读请求服务。当某个节点出现故障时,副本分片可以自动接管主分片的工作,确保数据的可靠性和可用性。...在搜索时,Elasticsearch会根据查询条件在倒排索引中查找匹配的文档列表,并计算每个文档的相关性得分,最后按照得分排序返回结果。...不进行小写化、去除标点符号等处理,可能影响搜索结果。 7.2.3 空白分词器 优点: 分词规则简单明了,易于理解。 缺点: 分词效果不佳,可能产生大量无意义的词项。 不适用于需要精细分词的场景。

    30410

    SpringBoot + ES基本项目搭建实例

    【搜索系列】ES基本项目搭建 之前一直没有写ES相关的博文,现在开始补课,预计5-6篇博文将es的使用姿势展示给各位小伙伴;本文将作为es结合springboot的第一篇博文,基本项目环境搭建 的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

    93620

    使用 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.2K20

    01_ElasticSearch学习笔记

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

    1.4K10

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

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

    98040

    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文件实际上可以是由---行分隔的一系列文档,每个文档被分别解析为一个展开的配置映射。

    85620

    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.注意事项如果不指定

    45010

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

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

    61030

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

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

    2.6K104

    【详解】ElasticSearchJava操作ES实例

    ElasticSearch Java操作ES实例简介Elasticsearch 是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景。...这些基本操作为更复杂的使用场景奠定了基础。以上就是使用 Java 操作 Elasticsearch 的一个简单示例。希望对你有帮助!当然可以!...创建索引:定义索引的映射并创建索引。插入文档:创建一个文档并将其插入到指定的索引中。查询文档:使用匹配查询(​​matchQuery​​)来搜索包含特定关键字的文档。...运行代码确保你的 Elasticsearch 实例正在运行,然后运行上述 Java 程序。你应该会看到索引创建、文档插入和查询结果的输出。希望这个示例对你有帮助!...中使用 ​​elasticsearch-java​​ 客户端进行基本的 CRUD 操作。

    11500

    【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.3K50

    大数据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高亮,判断高亮是否为空,不为空则将高亮碎片拼接在一起替换原有普通字段参考代码

    91022

    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 。

    3.1K32
    领券