【问题标题】:Elasticsearch - This search doesn't return the correct results after upgrading from 6.7 to 7.0Elasticsearch - 从 6.7 升级到 7.0 后,此搜索不会返回正确的结果
【发布时间】:2019-04-22 23:47:10
【问题描述】:
{  
  "query":{  
    "constant_score":{  
      "filter":{  
        "bool":{  
          "should":{  
            "terms":{  
              "field_a":[  
                "value1", "value2"
              ]
            }
          },
          "must":{  
            "term":{  
              "field_b":"value"
            }
          }
        }
      }
    }
  }
}

这个搜索应该返回在 field_a 中包含 value1 或 value2 并且在 field_b 中包含 value 的结果。

与这个 MySQL 查询非常相似:

SELECT * FROM table WHERE field_a IN ('value1', 'value2') AND field_b = value

升级后它将返回field_b = value的所有结果。查询的第一部分被完全忽略。
有什么修复建议吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您遇到了this breaking changeminimum_should_match 不再设置为 1。要更正此问题,请将您的 minimum_should_match 显式设置为 1

    您的新查询可以这样修复:

    {  
      "query":{  
        "constant_score":{  
          "filter":{  
            "bool":{  
              "should":{  
                "terms":{  
                  "field_a":[  
                    "value1", "value2"
                  ]
                }
              },
              "minimum_should_match": 1,
              "must":{  
                "term":{  
                  "field_b":"value"
                }
              }
            }
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-03-02
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多