zoukankan      html  css  js  c++  java
  • ElasticSearch中的sort排序和filedData作用

    • 默认情况下,ElasticSearch 会根据算分进行排序;
    • 可以使用 sort API 指定排序的规则;
    POST /kibana_sample_data_ecommerce/_search
    {
      "size": 5,
      "query": {
        "match_all": {
    
        }
      },
      "sort": [
        {"order_date": {"order": "desc"}}
      ]
    }

    在 Elasticsearch 中, 相关性得分 由一个浮点数进行表示,并在搜索结果中通过 _score 参数返回
    默认排序是 _score 降序

    有时,相关性评分对你来说并没有意义。例如,下面的查询返回所有 user_id 字段包含 1 的结果:

    多级排序

    排序条件的顺序是很重要的。结果首先按第一个条件排序,仅当结果集的第一个 sort 值完全相同时才会按照第二个条件进行排序,以此类推。

    GET /_search


    GET /_search
    {
        "query" : {
            "bool" : {
                "must":   { "match": { "tweet": "manage text search" }},
                "filter" : { "term" : { "user_id" : 2 }}
            }
        },
        "sort": [
            { "date":   { "order": "desc" }},
            { "_score": { "order": "desc" }}
        ]
    }

    字符串排序与多字段

    被解析的字符串字段也是多值字段, 但是很少会按照你想要的方式进行排序。
    如果你想分析一个字符串,如 fine old art , 这包含 3 项。
    我们很可能想要按第一项的字母排序,然后按第二项的字母排序,诸如此类,
    但是 Elasticsearch 在排序过程中没有这样的信息。。一个字符串如果进行分词之后,如果你对字符串进行排序的话,他的排序规则就不想日期、数字那样是固定的,如果想按照一个字符串作为一个整体进行排序,不进行分词之后的排序,可以做下面的操作

    一个简单的方法是用两种方式对同一个字符串进行索引,这将在文档中包括两个字段:
    analyzed 用于搜索,
    not_analyzed 用于排序

    "tweet": {
        "type":     "string",
        "analyzer": "english"
    }
    将上面的转为下面的格式
    "tweet": { 
        "type":     "string",
        "analyzer": "english",
        "fields": {
            "raw": { 
                "type":  "string",
                "index": "not_analyzed"
            }
        }
    }

    其中字段tweet字段进行查询操作会进行分词,tweet.raw字段不进行分词,作为sort操作,整个字符串不进行分词整个字符串进行排序,但是将文本字段用于聚合,排序需要开启fielddata字段

    https://segmentfault.com/a/1190000016645964

    tweet
  • 相关阅读:
    eclipse
    一次性验证码
    mybatis。逆向工程
    mybatis02.动态sql
    mybatis01
    plsql
    HDU.2149 Public Sale (博弈论 巴什博弈)
    HDU.1846 Brave Game (博弈论 巴什博弈)
    博弈论快速入门
    HUD.2795 Billboard ( 线段树 区间最值 单点更新 单点查询 建树技巧)
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/13021110.html
Copyright © 2011-2022 走看看