• es中filter和query的对比


    1、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": {
        "country": "china",
        "province": "shanxi",
        "city": "xian"
      },
      "name": "marry",
      "age": 35,
      "join_date": "2015-01-01"
    }

    搜索请求:年龄必须大于等于30,同时join_date必须是2016-01-01
    GET /company/employee/_search
    {
      "query": {
      "bool": {
        "must": [{
          "match": {
            "join_date": "2016-01-01"
            }
          }
        ],
        "filter": {
          "range": {
            "age": {
              "gte": 30
              }
            }
          }
        }
      }
    }

    2、filter与query对比大解密
    filter,仅仅只是按照搜索条件过滤出需要的数据而已,不计算任何相关度分数,对相关度没有任何影响。
    query,会计算每个document相对于搜索条件的相关度,并按照相关度进行排序。
    一般来说,如果你是在进行搜索,需要将最匹配搜索条件的数据先返回,那么用query;如果你只是要根据一些条件筛选出一部分数据,不关注排序,那么使用filter。

    3、filter和query性能对比
    filter,不需要计算相关度分数,不需要按照相关度分数进行排序,同时还有内置的机制,自动cache最常使用filter的数据。
    query,相反,要计算相关度分数,按照分数进行排序,而且无法cache结果。

  • 相关阅读:
    23种设计模式(1)
    设计模式六大原则
    关于设计模式
    《代码整洁之道》整理
    MySQL 查询优化
    互联网流量下的分层实验平台是咋做的
    机器学习web服务化实战:一次吐血的服务化之路
    RabbitMQ和Kafka到底怎么选(二)?
    RabbitMQ和Kafka到底怎么选?
    基于海量词库的单词拼写检查、推荐到底是咋做的?
  • 原文地址:https://www.cnblogs.com/qinjf/p/8530968.html
Copyright © 2020-2023  润新知