【ElasticSearch】
种下星星的日子
用代码书写人生,尽在我的CSDN,欢迎大家访问!
展开
-
【ElasticSearch】搜索推荐
搜索推荐:类似百度,用户在输入时,自动带出可能要搜索的关键词。一般的实现方式是通过前缀匹配:GET /my_index/my_type/_search { "query": { "match_phrase_prefix": { "title": "hello d" } }}但是这种方法根据前缀,然后扫描整个倒排索引的性能太差,不推荐使用。引出ngramNgram:ngram的推荐原理:比如输入quick:quick,五种长度下的ngram:len原创 2020-12-23 16:16:40 · 653 阅读 · 1 评论 -
【ElasticSearch】精准搜索
一、and关键字:搜索结果精准控制的第一步,灵活使用and关键字,如果希望所有的搜索关键字都匹配,就可以使用and,实现单纯match query无法实现的效果。GET /forum/article/_search{ "query": { "match": { "title": { "query": "java elasticsearch", "operator": "and" } } }}二、min原创 2020-12-18 18:33:45 · 523 阅读 · 1 评论 -
【ElasticSearch】重建索引
重建索引是为什么?什么时候需要重建索引?比如,我们插入一条数据:PUT /my_index/my_type/3{ "title": "2017-01-03"}title本来只想让它是string类型,但是由于第一条数据插入时es会自动创建映射,将“2017-01-03”映射成date类型:{ "my_index": { "mappings": { "my_type": { "properties": { "title": {原创 2020-12-09 15:45:58 · 332 阅读 · 0 评论 -
【ElasticSearch】deep paging及解决方案
es分页查询:搜索语法:GET /_search?size=10GET /_search?from=0&size=10什么是deep paging问题?为什么会产生这个问题,它的底层原理是什么?deep paging:简单来说,就是搜索特别深,比如总共有60000条数据,每个shard分了20000条数据,每页10条,要搜索到第1000页,所以每个shard都要将第10001~10010条返回给coordinate node,然后coordinate node收到总共30003条数据,原创 2020-12-08 15:25:59 · 354 阅读 · 0 评论 -
【ElasticSearch】filter与query对比
对比filter与query的使用:先插入两条数据:PUT /company/employee/2{ "address": { "country": "china", "province": "jiangsu", "city": "nanjing" }, "name": "tom", "age": 30, "join_date": "2016-01-01"}PUT /company/employee/3{ "address": { "co原创 2020-12-07 18:40:52 · 221 阅读 · 0 评论 -
【ElasticSearch】相关度算法
搜索结果分析:{ "took":1, "timed_out":false, "_shards":{ "total":17, "successful":17, "skipped":0, "failed":0 }, "hits":{ "total":13781, "max_score":1, "hits":[ {原创 2020-12-07 18:34:44 · 457 阅读 · 0 评论 -
【ElasticSearch】_all metadata引出对mapping思考
一、_all metadata原理:GET /index/type/_search?q=test直接可以搜索所有的field,任一个field包含指定的关键字就可以搜索出来。搜索过程是怎样的?es中的_all元数据,在建立索引的时候,我们插入一条document,它里面包含了多个field,此时es会自动将多个field的值,全部用字符串的方式串联起来,变成一个长字符串,作为_all field的值,同时建立索引。后面如果搜索的时候,没有对某个field指定搜索,就默认搜索_all field,其原创 2020-12-07 16:56:20 · 335 阅读 · 0 评论 -
【ElasticSearch】并发冲突问题与partial update
es并发冲突问题:假设两个线程,读取商品信息库存100,然后分别下单,这时库存最新应是98,但是两个线程并发更新库存,可能同时读取的库存100,线程A下单减一,剩99,线程B下单剩99,这个结果是不对的。如果解决呢?加锁。悲观锁:线程A读取库存的时候加锁,然后下单扣库存,完事儿再线程B读库存下单乐观锁:乐观锁不加锁,读取库存时标注版本号为1,线程A处理完库存为99后,线程B拿着99,version=1去更新es比对版本发现不匹配会重新读取库存,此时库存为99,线程B在99-1=98件,写回es。原创 2020-11-29 22:06:29 · 392 阅读 · 0 评论 -
【ElasticSearch】搜索语法
一、搜索语法:1、query string search执行GET ucms_documentsAliases/_search直接查2、query DSL查所有:{“query”: {“match_all”: {}}}排序:{“query”: {“match”: {“title”: “28”}},“sort”: [{“createTime”: {“order”: “desc”}}]}分页:{“query”: {“match”: {“title”: “28原创 2020-11-29 21:47:38 · 1384 阅读 · 0 评论 -
【ElasticSearch】es基本了解
es可做搜索引擎,也常用语搭建ELK系统做日志分析。搜索引擎:es最基本的有三个名词我们要知道:索引,类型,文档。索引相当于mysql数据库,类型相当于表结构,文档相当于行数据。索引:倒排索引:又叫反向索引。根据文档内容中的关键字建立索引,叫倒排索引。类型:表示字符串的有keyword、text;keyword:直接建立反向索引text:先分词,后建反向索引es在lucene的基...原创 2019-08-26 19:20:48 · 734 阅读 · 0 评论 -
【ElasticSearch】es简单使用
es可以做到多字段模糊搜索,因其易用,被广大研发人员使用,最近小编就接到模糊搜索的需求,之前用过solr,通过看搜索引擎使用热度和排名,es近几年明显上升,小编公司所用也是es,那便来看看我们如何使用吧,本篇只做简单介绍es的使用方法,以及效果,关于原理小编日后补充。es现在已有6.x版本,我们项目用的是5.5.3版本,更低版本的使用方式和高版本不太一样,这个大家注意下,可能影响到后来的使用。...原创 2019-08-23 18:52:05 · 7014 阅读 · 0 评论