`
qindongliang1922
  • 浏览: 2188857 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117670
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126074
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:60034
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71402
社区版块
存档分类
最新评论

ElasticSearch+Solr几个案例笔记

阅读更多
(一) 最大能索引字符串的长度

关于能索引最大的字符串长度,其实在Elasticsearch和Solr中都是由底层的Lucene决定的

(1)不分词+索引的字符串最大长度为32766字节

(2)分词+索引一般不会出现长度越界问题

(3)不索引的字符串虽然没有长度最大限制,但是不建议使用搜索引擎存储大量文本

(二)设置超出一定长度的字段,不索引

其实这个功能,也是由底层Lucene提供的,关于它的应用场景举个例子,大部分情况下,不分词的字段可能经常会被用来聚合,过滤,排序,分组,但是如果这个不分词的字段非常长,通常情况下是没有意义的,比如标题,小于40个字的,我们索引它,让它参与聚合,过滤,排序等,但如果大于40,我们则认为它不需要索引,从而节省索引的体积大小,来提高搜索性能。

如何设置?

(1)在ES中

"message": {
          "ignore_above": 20, //超过20个字节,不索引该字段,注意对其他字段没有影响
          "index": "not_analyzed",
          "type": "string"
        }
(2)在Solr中

<fieldType name="limit_len" class="solr.TextField">
    <analyzer>
      <tokenizer class="solr.KeywordTokenizerFactory"/>
      //超过10个字节,就丢弃该字段,同样对其他字段没有影响
      <filter class="solr.LengthFilterFactory" min="0" max="10"/>
    </analyzer>
  </fieldType>
(三)ElasticSearch中动态mapping的三种校验模式

在ES中,一个mapping下面可以有多个type,每个type相当于一个表,type的检验模式有三种

//默认模式,开启动态模式,允许任何字段添加到该表中
(1)"dynamic": true
//关闭动态模式,不在定义的scheam中的字段,会自动忽略,不会报错
(2)"dynamic": false
//严格模式,不在定义的scheam中的字段,会拒绝索引,抛出异常
(3)"dynamic": "strict"
注意type的schema是有校验模式的,但是每个mapping里面的type却是动态的,添加一个不存在的type并不会报错,es会自动识别它的schema里面的字段并给予其认为可能的字段类型

(四)ElasticSearch中queryString语法的一个小坑

ElasticSearch里面索引一个不分词的字段时候,如果不给设置自动转小写的filter,那么他就是数据本身,但是查询的时候,默认情况下es会给转成小写查。

举个例子: 索引name=Hadoop进入es索引,然后使用name=Hadoop查,你会发现使用querySting语法查不到,因为es自动把Hadoop转成了hadoop去查,这样以来肯定查不到,有点小坑,这个问题在Solr中是不存在的。

如何解决:

//更改es默认转小写的bool值为false
QueryBuilders.queryStringQuery("name:Hadoop").lowercaseExpandedTerms(false)
(五)ElasticSearch+Solr使用queryString语法的注意事项

lucene的默认的queryString语法,如果一个关键词里面带有空格,它会自动拆分成两个关键词进行检索,但有时我们就是查询带空格的关键词,应该怎么办呢?

举个例子:

不分词+索引字段content=Syntax error 进入es,solr或者lucene中

假如我想使用前缀模糊查询:

content:Syntax err*
上面的语法是查不到任何内容的,但是明明有这条数据,为什么查不到?就是因为lucene默认会把空格当做多个关键词分界线,这样以来查询就转化成了:

content:Syntax
default_field:err*
所以就查不到数据了,如何解决?

非常简单,转义这个空格即可,注意只能转义空格,不能对整个查询字符串进行转义:

content:Syntax\\ err*


有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。

0
0
分享到:
评论

相关推荐

    es与solr的区别_solr_ES_es与solr的区别_elasticsearch_

    在大数据和搜索引擎领域,Elasticsearch (ES) 和 Apache Solr 都是广泛使用的开源技术,它们都基于 Lucene 库,提供高性能、可扩展的全文搜索和分析能力。然而,两者在设计哲学、使用场景、功能特性以及社区支持等...

    Scrapy + Elasticsearch + Django打造全文搜索引擎源码.zip

    Scrapy + Elasticsearch + Django打造全文搜索引擎源码 Scrapy + Elasticsearch + Django打造全文搜索引擎源码 Scrapy + Elasticsearch + Django打造全文搜索引擎源码 Scrapy + Elasticsearch + Django打造...

    Logash+Elasticsearch+Kibana+日志系统全套安装部署.rar

    Logash+Elasticsearch+Kibana+日志系统全套安装部署.rar Logash+Elasticsearch+Kibana+日志系统全套安装部署.rar Logash+Elasticsearch+Kibana+日志系统全套安装部署.rar Logash+Elasticsearch+Kibana+日志系统全套...

    基于docker-compose构建filebeat + Logstash +Elasticsearch+ kibana日志系统

    基于docker-compose构建filebeat + Logstash +Elasticsearch+ kibana日志系统 对nginx日志进行正则切割字段。 https://www.jianshu.com/p/f7927591d530

    filebeat+elasticSearch+kibana 学习体会

    就是学习这三个的一些心得体会,适合初学者,适合给他人讲解使用!

    搜索引擎选择: Elasticsearch与Solr - 叽歪.pdf

    在搜索引擎领域,Elasticsearch与Solr是两款被广泛使用且具有代表性的开源全文搜索引擎。它们都基于Apache Lucene构建,提供了强大的搜索引擎功能。在进行搜索引擎选择时,对比Elasticsearch与Solr可以帮助我们更好...

    skywalking+es7+nacos+ik+kibana

    2. **Elasticsearch (ES7)**:Elasticsearch 是一个实时分布式搜索和分析引擎,常用于日志聚合和分析。ES7 指的是它的第七个大版本,提供了更高效的数据处理和更丰富的功能。在 SkyWalking 中,Elasticsearch 作为...

    基于SpringBoot+ElasticSearch+vue.js开发的大数据营销系统源码.zip

    1、基于SpringBoot+ElasticSearch+vue.js开发的大数据营销系统源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为...

    ES和solr搜索方案对比

    在查询方面,ES允许通过JSON格式或者URL进行查询,并且可以通过curl或者ElasticSearch-Head(一个类似于Solr Admin页面的工具)来进行操作。ES的查询灵活性在于它支持在查询过程中进行完整的脚本编写,从而实现对...

    基于Springboot + ElasticSearch +Vue+MySQL构建的博客检索系统

    基于Springboot + ElasticSearch +Vue+MySQL构建的博客检索系统 项目经过严格测试,确保可以运行! 简易博客检索系统使用前后端分离,前端使用 Vue ,后端使用 SpringBoot 数据库 MySQL 检索使用 ElasticSearch ...

    ElasticSearch+Spark 构建高相关性搜索服务,千人千面推荐系统

    这个项目可能包括了数据源的读取脚本、Spark的转换和分析逻辑、Elasticsearch的索引配置以及推荐算法的实现。通过这个项目,开发者可以学习到如何将Elasticsearch和Spark结合,解决实际业务中的搜索和推荐问题。 ...

    elasticsearch+spring小案例

    在本"elasticsearch+spring小案例"中,我们将探讨如何集成Elasticsearch 6.1.2版本与Spring框架,以便在Java应用中利用Elasticsearch的强大搜索功能。Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,...

    人工智能-项目实践-信息检索-SpringBoot+es+vue搭建博客检索系统

    SpringBoot+es+vue搭建博客检索系统 需要提前安装好 ElasticSearch 。logstash 安装下文有具体说明。 新建表 blog 必须有字段 id update_time,可参考项目中 entity 包下字段建表。 项目地址 SpringBoot 搭建博客...

    elasticsearch+Mybatis+Aop

    3. **编写工具类**:为了方便操作,可以封装一个Elasticsearch工具类,这个类中包含执行ES查询、索引创建、文档增删改查等常用方法。 4. **AOP切面**:定义一个AOP切面,该切面会在Mapper接口的方法执行后被触发,...

    相关性搜索利用Solr与Elasticsearch创建智能应用

    资源名称:相关性搜索 利用Solr与Elasticsearch创建智能应用内容简介:《相关性搜索:利用Solr与Elasticsearch创建智能应用》揭开了相关性搜索的神秘面纱,告诉大家如何将 Elasticsearch与 Solr这样的搜索引擎作为可...

    ElasticSearch+Django+Scrapy搜索引擎

    scrapy爬虫获取数据存储至es,ElasticSearch+Django实现搜索页面。 快速开始 # 下拉项目代码 git clone https://github.com/downdawn/eswork.git # 安装requirements.txt依赖 pip install -r requirements.txt # ...

    基于SpringBoot+Elasticsearch+MongoDB开发的技术分享平台源码(课程大作业项目).zip

    基于SpringBoot+Elasticsearch+MongoDB开发的技术分享平台源码(课程大作业项目).zip基于SpringBoot+Elasticsearch+MongoDB开发的技术分享平台源码(课程大作业项目).zip基于SpringBoot+Elasticsearch+MongoDB开发的...

    个人毕设-基于SpringBoot+ElasticSearch+vue.js开发的大数据营销系统项目源码.zip

    个人毕设-基于SpringBoot+ElasticSearch+vue.js开发的大数据营销系统项目源码.zip个人毕设-基于SpringBoot+ElasticSearch+vue.js开发的大数据营销系统项目源码.zip个人毕设-基于SpringBoot+ElasticSearch+vue.js开发...

Global site tag (gtag.js) - Google Analytics