《Elasticsearch全文检索优化:从基础到高级技巧》

Elasticsearch全文检索优化基础配置www.hynrj.com.cn

合理设置分片和副本数量,分片数建议与节点数一致,避免过度分配。副本数根据读写负载调整,通常1-2个副本可平衡性能与容错。www.hotrac.cn

配置合适的分析器(analyzer),标准分析器适合多数场景,中文场景推荐IK分词器。自定义分析器时可组合character filters、tokenizer和token filters。www.gmprinting.cn

PUT /my_index
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1,
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "type": "custom",
          "tokenizer": "ik_max_word",
          "filter": ["lowercase"]
        }
      }
    }
  }
}

索引映射优化策略www.efeite.com.cn

明确字段数据类型,避免动态映射导致性能损耗。text类型字段默认会生成keyword类型的子字段,若不需要可关闭此特性。www.jumao.cc

对不参与搜索的字段设置"index": false,对需要精确匹配的字段使用keyword类型。日期字段指定format避免自动识别开销。www.js-valve.cn

{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "ik_max_word",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "create_time": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      }
    }
  }
}

查询性能优化技巧www.sjzlybj.com

使用bool查询组合多个条件,must/filter用于AND逻辑,should用于OR逻辑。filter查询会缓存结果,适合重复执行的过滤条件。www.huadamotor.com

对范围查询使用date_histogram聚合替代range查询,对高频词使用constant_score提升查询效率。合理设置terminate_after参数限制早期终止。www.china-sts.com

GET /_search
{
  "query": {
    "bool": {
      "must": {
        "match": { "content": "分布式" }
      },
      "filter": {
        "range": { "create_time": { "gte": "now-1d/d" } }
      }
    }
  },
  "terminate_after": 1000
}

高级索引管理技术www.ouxijie.com

冷热数据分离部署,热节点使用SSD并配置更高规格。通过index.routing.allocation设置将新索引分配到热节点。www.sh-bq.com

定期执行_forcemerge合并分段,对只读索引设置index.blocks.write为true。使用alias实现零停机索引切换,通过rollover自动管理时序索引。www.sytncp.com

POST /logs-000001/_rollover
{
  "conditions": {
    "max_age": "7d",
    "max_docs": 1000000
  }
}

监控与持续调优www.zkpda.cn

通过_cat/indices?v监控索引状态,关注segments.count和memory_in_bytes指标。使用Profile API分析查询耗时,优化评分高的查询子句。www.pneuflex.cn

定期清理旧索引,设置ILM策略自动管理生命周期。调整JVM堆大小不超过物理内存50%,避免频繁GC影响性能。www.freeteklcd.com

全部评论

相关推荐

11-21 22:22
中南大学 Java
本人背景9本,三段大厂实习,后端开发方向。本文将分享秋招至今失败的一切,供读者参考,也是找个渠道抒发心里的郁闷。我的秋招大概在八月底开始,其中八月和九月的约面是非常多的,除了阿里系以外,其他企业大部分给了面试,也大多走到后续的流程了,具体情况如下:腾讯二面挂,字节完成hr面,百度完成三面,滴滴完成三面,美团二面挂,京东一面挂,小红书一面结束(之后过了两个月才挂,不知道何意味),虾皮完成hr面。这段时间的面试总体情况比较顺利,这是符合我的bg的预期的,但是挂的面试已经出现了一些奇怪的端倪,例如:腾讯一面聊了两个小时特别投缘,二面因为我不太会大数据的技术直接挂了美团一面二面都非常顺利,跟面试官聊的也很好,但是没有任何缘由的挂京东一面则是死扣我在京东的实习经历问细节,接近一年前的细节我实在是记不起来,于是挂了但是鉴于当时有好几家大厂已经走完流程,想着怎么样泡池子也能泡出来一个,于是非常悠然自得地等了一段时间现在回头看,其实命运似乎早已在冥冥之中影响着某些事国庆八天假期刚过去,我等来的不是其他人那种假期结束的遗憾和回味,而是字节和百度相继泡池子挂掉的绝望消息,惊诧之余马上感受到的是恐惧,恐惧自己秋招就这样与大厂失之交臂。于是马上火速重新投简历,包括但不限于之前挂过的大厂和一些中厂。令我没有想到的是,腾讯、美团、小红书再也没有任何约面,京东在两个月以后复活以后再次一面挂掉。唯一令我抱有希望却又一次次令我绝望的是字节,因为前面面试表现还不错,重新投递以后马上被约了面试,顺利通过前两轮拷打,第三轮面试遇到难以理喻的主管,全程问ai相关知识,我讲工程他说我不懂底层原理,我讲原理他说你一个搞开发的给我说这些干什么。全程否定,令人汗颜,最后不出意料的挂了。至此已经有些心灰意冷,没想到的是马上又被捞起来约面试,这一次一面问了八十分钟基础知识,很是全面,于是二面发生了完全令我没想到的情况,面试官在让我做了一道我做过的最难的lc题以后,直接开始与我讨论数学问题,是一个排列组合问题,现场推导递推公式。真的,当时那种耻辱、愤怒和无奈交织的心情我永远不会忘记,它是我一辈子的阴影,即使未来某一天拿到offer我都永远记得秋招的残酷和恶心。前面讲了这么多我所经历的事情,想在这里谈谈我的想法和心情。每一个等待的日子,枯燥、焦躁而且没有尽头,像一只鹿在无尽的密林里奔走。直到鹿跑断了腿,人绷断了神经,这煎熬才被动地结束。然而,即便跑出了密林,那守在尽头的也未必是好运。经历了这些事情,其实也让我意识到一些事情,人生不是贪心算法,不能试图在每个阶段追求最好的结果来实现完美的人生。以上是一个失意者的自白,与大家分享一些经历和看法,offer收割机大佬们请轻点嘲讽
不懂你的黑色幽默~:千里马常有而伯乐不常有。不要否定自己,加油!
投递美团等公司10个岗位
点赞 评论 收藏
分享
11-21 03:09
已编辑
南昌大学 golang
bg普211本,走的golang后端方向。找实习经历:最近一个月投了一些日常,面了4场,都是一面挂。简历包装成分比较多,当时这个简历准备了两个星期,问AI解决什么问题用什么技术,跟其他技术对比优缺点在哪,等等。但是面试的时候一些基础的八股都答的模模糊糊,然后项目延伸的场景题一点不会。有点害怕面试,面前焦虑…本文可能带点碎碎念…省流就是因为每周面心态不行,不知道先学什么以及三天打鱼两天晒网…现在的主要问题,一个是只能依靠即时满足无法撑过枯燥的学习,另一个是难以调整心态,面试焦虑。个人背景:主包其实本来是大一开始学后端的,但是当时不知道合适的学习方法(学习路线和借助AI),也社恐不太敢问学长,走了很多弯路,也没有花很多时间在后端上面(按兴趣学的只有大二上学期写了opencamp的rustlings和learning-cxx,还有玩steam的图灵完备,剩余时间比较摆烂)。结果就是现在这鬼样子,只会写crud,差不多就是会gin gorm基础,会写注册登录和简单业务接口,写过几种项目结构和设计模式。缺乏自己延展的能力。计算机基础:也相当差,之前大二学的计网全忘光了,操作系统60飘过。虽然大一的时候打算法竞赛(也没什么成绩就是,省二等奖收集者),但到现在一年半没碰了,就只有dfs,并查集啥的一些很基础的题目随便写,hot100链表因为竞赛没练过相当不熟练。大二下的时候,数据库课看八股,又困又累,什么都没看进去,后面自然又是全忘光了。现在我虽然有了个概览,知道后端除了crud有缓存、微服务、分布式、消息队列等等东西,知道后端架构设计是要做权衡,性能、一致性、容灾,需要通过实验测出具体的数据来做决策,但是具体的方案不会,看基础知识是真看不进去。现在的主要问题,一个是只能依靠即时满足无法撑过枯燥的学习,另一个是难以调整心态。我高中以前一直是优等生,能够享受大部分题目都会的快感,能明确地有信心自己能做出来,解题过程需要进行推理,并且做完立刻就能得到正确反馈,其中的失败调整过程长度也在可接受范围内。(喜欢写rustlings一类的语言lab和玩《图灵完备》大概也是因为这个吧…)而现在的情景相当于我成了高三但是基础知识基本不会的状态,比我当年(会基础知识只是差做题)差多了。在这种情况下去面试也是相当痛苦,因为面试是不知道范围的。每次准备都不知道先看什么,学也学不进去。明明知道面试只是为了了解真实会问什么,但是还是很焦虑,拧巴心态。学长说去投简历面试实践是为了了解自己在哪里,别人在哪里,市场在哪里,但是我似乎还没有找到收敛的下限,只是一直失败…但是我也不能确定不面试就能学进去啊,因为我大二暑假是真的一点代码都不想碰,相当烦躁,八股也不想看。现在甚至连稍微花点时间的算法题(不能即时反馈的)都不想写了。还在纠结要不要整块时间搓项目压测试试,感觉会非常花时间。可能我项目管理也是一坨。
圆规学java:27届不着急,边投边学,克服恐惧感,你现在不敢面试,你为什么认为你暑期就勇敢了,你现在的进度其实还很早,我当时大三下才开始实习,我也很焦虑着急。永远没有准备好的时候,当下努力就是最好的加油!
点赞 评论 收藏
分享
我是个没天赋的人,努力学习也只考上了个一本,家里条件也不怎么样。大一玩了一年,没怎么学技术,也没有卷绩点,全在游戏小说抖音中度过。大二上接触了牛客,看到了许多优秀的同龄人。很多双非的同学,甚至不少学院本的同学都进了大厂实习。我把他们作为榜样,决定好好学习。我每天都至少学八九个小时,很多次都想要放弃,想哭,我都坚持了下来。我总是告诉自己,只要努力,就一定能有好的结果。这几个月过的很累,但也很充实。转眼就到大二下了,我决定去找实习了,但是学校的认可度让我感到心底发凉,明明和广工这种知名双非分差不多,结果总被问是不是公办本科。两个月投了一千份实习,只有四个面试,最终去了个中小厂实习。结果就是改了两个月bug,虽然mt人挺好,但是实在学不了什么东西,所以就离职开始面试。凭借这段实习,确实多了不少中小厂面试,但是大厂依旧没有面试机会。除了字节腾讯所有大厂都投了,结果依旧是0面试。最终有幸获得美团的面试机会,面试也幸运的通过,然后入职了。为了省钱坐十几个小时硬座到北京,到北京的第一天,由于太激动想要租房,结果被坑了2600,之前实习的地方,房东也故意不退押金,加起来总共损失3000多。虽然很难过,但是我还是忍受了下来,我想着实习才刚开始,会好起来的。实习了大半个月,跟学校这边沟通一直不成功,我每天都寝食难安,精神都快崩溃了,经常凌晨两三点才睡着,想要跳楼。最后迫于无奈,我一大早我坐高铁回去,恳求院主任给我一个机会,我怎么恳求讲理都没用,甚至都磕头下跪了,还是没用。院主任一点机会都没给我,连让我跟各科老师沟通机会都不给,要不休学要不辞职。我没得选择,这段实习我看的比我的生命还重要,这不仅是我这大半年的心血,更是未来的一份希望。我只能休学,我想着现在好好实习,多学点技术,到时候秋招早点拿到offer,然后再补这学期的课也不是不行。但是,现实总是事与愿违。这三个月说实话并没有学到什么东西,前一个月很闲,这两个月事很多,每天基本都是九点后下班,但都是杂活。产出都是靠我看文档加上代码写上去的。我真的很想锻炼一下技术,但是总是不尽人意。三个月了,我到现在都还没做过一个像样点的需求。产出是能编,但有破绽不说还没锻炼到技术。我好想真正的做一下需求啊,我好想真正的走完一遍流程,去上线一次啊。接下来两个月,我不知道该怎么坚持下去了,现在每天都想哭,很焦虑,很难受。冒着将来可能延毕的风险,我赌上了一切,结果输的这么彻底,可能我就只是个小丑吧。如果家庭好点就不用卷了,如果我聪明一点就能上个好学校了,如果大一有人带我,我就不会摆烂了,如果院主任给我个机会,我就不用这么苦了,如果我实习能有机会好好锻炼自己,我就不用这么难受焦虑了。但是没办法,我又能怎么办呢,无非是咬紧牙关罢了,毕竟没人能够帮助我,只能靠自己我可真是个小丑啊
牛客57762807...:这种院长就是恶心的死,家里户口本只有一页的孤儿,我们院长也是,家里人都去亲自找院长,送几百块的水果,送礼物,结果还是被她一顿电话操作毁offer了,担心学生安全不放实习就算了,特么是担心上课没人去,我这种会容易带坏风气导致很多人效仿,***妈呢,什么时候学生的前途被一堆KPI数字给限制了,本来还想做个乖孩子的,以为院长能开开恩,但是这种死了没的东西让我决定我再也不做乖孩子了,后面才知道爱哭的孩子没有奶吃的,还会被一顿毒打,大三下学期我决定偷偷溜走一学期,一节课都不去,少的钱她一个孤儿也给我补不了
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务