美文网首页
45、初识搜索引擎_filter与query深入对比解密:相关度

45、初识搜索引擎_filter与query深入对比解密:相关度

作者: 拉提娜的爸爸 | 来源:发表于2020-01-08 15:45 被阅读0次

    1、filter与query示例

    (1)创建测试用的document数据
    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"
    }
    
    (2)搜索请求:年龄必须大于等于30,同时join_date必须是2016-01-01
    GET /company/employee/_search
    {
      "query": {
        "bool": {
          "must": [
            {"match": {
              "join_date": "2016-01-01"
            }}
          ],
          "filter": {
            "range": {
              "age": {
                "gte": 30
              }
            }
          }
        }
      }
    }
    ----------------------------搜索结果----------------------------
    {
      "took": 9,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
      },
      "hits": {
        "total": 1,
        "max_score": 1,
        "hits": [
          {
            "_index": "company",
            "_type": "employee",
            "_id": "2",
            "_score": 1,
            "_source": {
              "address": {
                "country": "china",
                "province": "jiangsu",
                "city": "nanjing"
              },
              "name": "tom",
              "age": 30,
              "join_date": "2016-01-01"
            }
          }
        ]
      }
    }
    

    2、filter与query对比大解密

    filter:仅仅只是按照搜索条件过滤出需要的数据而已,不计算任何相关度分数,对相关度没有任何影响
    query:会去计算每个document相对于搜索条件的相关度,并按照相关度进行排序。

    如果你是在进行搜索,需要将最匹配搜索条件的数据先返回,那么用query;
    如果你只是要根据一些条件筛选出一部分数据,不关注其排序,那么用filter;
    除非是你的这些搜索条件,你希望越符合这些搜索条件的document越排在前面返回,那么这些搜索条件要放在query中;如果你不希望一些搜索条件来影响你的document排序,那么就放在filter中即可。

    3、filter与query性能

    filter:不需要计算相关度分数,不需要按照相关度分数进行排序,同时还有内置的自动cache最常使用filter的数据
    query:相反,要计算相关度分数,按照分数进行排序,而且无法cache结果

    相关文章

      网友评论

          本文标题:45、初识搜索引擎_filter与query深入对比解密:相关度

          本文链接:https://www.haomeiwen.com/subject/hpdsactx.html