ES按名称查询数据时,相同名称的数据评分不同问题

由于Elasticsearch的分片存储特性,查询时相同名称的数据评分可能不同。解决方法包括与产品团队沟通确保数据均匀分布,或者在查询时使用dfs_query_then_fetch方式统一计算评分,但后者可能影响性能。
摘要由CSDN通过智能技术生成

问题原因:es索引是分片存储的,查询计算评分的时候,是每个分片单独计算的,所以会出现相同名称的人员评分不同的问题、

解决方案:

1、与产品沟通,当数据量足够大时,每个分片数据近似相同,则各个分片计算出来的评分会很相近

2、查询的时候增加查询条件(dfs_query_then_fetch),不让各个分片单独计算得分,而是统一计算,这样会有一定的性能影响,官方文档也不建议这么做https://www.elastic.co/guide/en/elasticsearch/guide/2.x/relevance-is-broken.html

searchRequest.searchType("dfs_query_then_fetch");
PUT /test2
{
 "settings": {
   "number_of_shards": 5,
   "number_of_replicas": 1
 }, 
  "mappings": {
    "test2": {
      "dynamic_templates": [
        {
          "notanalyzed": {
            "match": "*",
            "match_mapping_type": "string",
            "mapping": {
              "type": "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值