【ElasticSearch】相关度算法

搜索结果分析:

{
    "took":1,
    "timed_out":false,
    "_shards":{
        "total":17,
        "successful":17,
        "skipped":0,
        "failed":0
    },
    "hits":{
        "total":13781,
        "max_score":1,
        "hits":[
            {
                "_index":".kibana",
                "_type":"config",
                "_id":"5.6.4",
                "_score":1,
                "_source":{
                    "buildNum":15571,
                    "defaultIndex":null
                }
            }
        ]
    }
}

took:搜索花费多少毫秒
hits.total:几条结果
hits.max_source:最大相关度分数是多少,每条document对于search的相关度,_source分数越大,排位越靠前
hits.hits:默认查询前10条数据,完整数据,_source降序排序
shards:shards fail条件(primary和replica全部挂掉),不影响其他shard
timeout:默认无timeout,latency平衡
可根据用户指定的timeout返回数据(可能部分,可能全部返回),而不是等到拿到所有数据(可能要1分钟)
语法:

GET /_search?timeout=10ms

相关度计算的算法分析:
relevance score算法:计算出一个索引中的文本,他们之间的关联匹配程度
es使用的是term frequency/inverse document frequency算法,简称TF/IDF算法

1、Term frequency:
搜索文本中的各个词条在field文本中出现了多少次,出现次数越多,就越相关
例如:
搜索hello world
doc1:hello you,and world is wonderful.
doc2:hello,how are you.

2、Inverse document frequency:
搜索文本中的各个词条在整个索引的所有文档中出现了多少次,出现次数越多,越不相关。
搜索hello world
doc1:hello,today is very good.
doc2:hi world,how are you.

搜索的时候,要靠倒排索引,排序时,需要依靠正排索引,看到每个document的每个field,然后进行排序,所谓的正排索引,就是doc values
在建立索引的时候,一方面建立倒排索引,一方面建立正排索引,供排序,聚合,过滤等操作使用
doc values是被保存在磁盘上的,此时如果内存足够,os会自动将其缓存在内存中,性能还是会很高,如果内存不够,os会将其写入磁盘。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值