精华内容
下载资源
问答
  • 2020-12-22 22:14:00

    多值字段字符串排序

    译者注: 多值字段是指同一个字段在ES索引中可以有多个含义,即可使用多个分析器(analyser)进行分词与排序,也可以不添加分析器,保留原值。

    被分析器(analyser)处理过的字符称为analyzed field(译者注:即已被分词并排序的字段,所有写入ES中的字段默认圴会被analyzed), analyzed字符串字段同时也是多值字段,在这些字段上排序往往得不到你想要的值。 比如你分析一个字符 "fine old art",它最终会得到三个值。例如我们想要按照第一个词首字母排序, 如果第一个单词相同的话,再用第二个词的首字母排序,以此类推,可惜 ElasticSearch 在进行排序时 是得不到这些信息的。

    当然你可以使用 min 和 max 模式来排(默认使用的是 min 模式)但它是依据art 或者 old排序, 而不是我们所期望的那样。

    为了使一个string字段可以进行排序,它必须只包含一个词:即完整的not_analyzed字符串(译者注:未经分析器分词并排序的原字符串)。 当然我们需要对字段进行全文本搜索的时候还必须使用被 analyzed 标记的字段。

    在 _source 下相同的字符串上排序两次会造成不必要的资源浪费。 而我们想要的是同一个字段中同时包含这两种索引方式,我们只需要改变索引(index)的mapping即可。 方法是在所有核心字段类型上,使用通用参数 fields对mapping进行修改。 比如,我们原有mapping如下:

    "tweet": {

    "type": "string",

    "analyzer": "english"

    }

    改变后的多值字段mapping如下:

    "tweet": { <1>

    "type": "string",

    "analyzer": "english",

    "fields": {

    "raw": { <2>

    "type": "string",

    "index": "not_analyzed"

    }

    }

    }

    `tweet` 字段用于全文本的 `analyzed` 索引方式不变。 新增的 `tweet.raw` 子字段索引方式是 `not_analyzed`。 现在,在给数据重建索引后,我们既可以使用 `tweet` 字段进行全文本搜索,也可以用`tweet.raw`字段进行排序: ```Javascript GET /_search { "query": { "match": { "tweet": "elasticsearch" } }, "sort": "tweet.raw" } ``` >**警告**: >对 `analyzed` 字段进行强制排序会消耗大量内存。 >详情请查阅《字段类型简介》相关内容。

    更多相关内容
  • 研究了一下系统的数据库结构后,决定将要排除到后面的产品加为粗体,这样在数据库中的“ifbold”就会被标记为1,而其他产品就默认标记为0,然后就打算使用MySQL在Order By时进行多字段排序。 Order by的条件分割...
  • v-for根据某字段排序

    2020-08-10 16:05:54
    v-for根据某字段进行排序显示,方法比较灵活,可嵌入任何系统,不用依赖包,懂点vue基础的人都会用
  • java8之stream 多字段排序 时间排序

    千次阅读 2020-06-08 14:38:25
    Comparator.comparing 默认为降序排序, 升序代码:Comparator.comparing(stu::getA,Comparator.reverseOrder()) import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java...

    Comparator.comparing 默认为降序排序,
    升序代码:Comparator.comparing(stu::getA,Comparator.reverseOrder())

    
    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.List;
    import java.util.stream.Collectors;
    
    public class test {
        public static void main(String[] args) {
            List<stu> list = new ArrayList<>();
            stu s1 = new stu("2021-02-24","05:30");
            stu s2 = new stu("2021-02-24","05:31");
            stu s3 = new stu("2020-02-24","05:31");
            stu s5= new stu("2021-02-24","03:31");
            stu s4= new stu("2020-02-24","18:31");
            stu s6= new stu("2018-12-24","03:31");
            stu s7= new stu("2018-02-02","12:31");
            stu s17= new stu("2018-02-02","00:31");
            stu s8= new stu("2018-02-02","15:31");
            list.add(s1);
            list.add(s3);
            list.add(s2);
            list.add(s4);
            list.add(s5);
            list.add(s6);
            list.add(s7);
            list.add(s17);
            list.add(s8);
            list.stream().forEach(dd->System.out.println(dd));
            System.out.println("------------------------------------------");
            List<stu> collect = list.stream().sorted(Comparator.comparing(stu::getA).thenComparing(stu::getB)).collect(Collectors.toList());
            collect.stream().forEach(dd->System.out.println(dd));
        }
        static class stu{
            private String a;
            private String b;
            stu(String a,String b){
                this.a = a;
                this.b = b;
            }
    
            public String getA() {
                return a;
            }
    
            public void setA(String a) {
                this.a = a;
            }
    
            public String getB() {
                return b;
            }
    
            public void setB(String b) {
                this.b = b;
            }
    
            @Override
            public String toString() {
                return "stu{" +
                        "a=" + a +
                        ", b=" + b +
                        '}';
            }
        }
    }
    

     

    展开全文
  • 在代码开发中会遇到,讲取到的数据list按照某个字段排序,可以直接使用Collections.sort()方法排序 //排序前,要确认list 是否为空,避免空指针异常 List <ObejectEntity> list= new arrayList<>(); ...

    在代码开发中会遇到,讲取到的数据list按照某个字段排序,可以直接使用Collections.sort()方法排序

     //排序前,要确认list 是否为空,避免空指针异常
     List <ObejectEntity> list= new arrayList<>();
     Collections.sort(list, new Comparator<ObejectEntity>() {
                @Override
                public int compare(ObejectEntity o1, ObejectEntity o2) {
                //这里使用时间字段排序 如果要用其他字段直接从bean实体中取
                return o2.getPayTime().compareTo(o1.getPayTime());
                //上面使用的是降序排序,如果正序 直接使用o1-o2即可
                }
            });
    

    不过现在使用lambda表达式更简洁

     //这里是上面的lambda变种方式
     Collections.sort(list, (o1, o2) -> o2.getPayTime().compareTo(o1.getPayTime()));
    
    //如果排序后,需要取前几条,可以直接使用sublist(startIndex , endIndex)
     List<ObejectEntity> orderList=list.subList(0,10);
    
    展开全文
  • Java 将List集合根据时间字段排序

    千次阅读 2021-03-21 17:25:47
    } } public static List<Student> ListSort(List<Student> list) { // 通过Collections工具类sort方法传list排序 Collections.sort(list, new Comparator() { @Override public int compare(Student ...

    给大家做了个案例,让我们直接贴代码

    • 使用list帮助类Collections中的sort()方法重写compare()方法
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Date;
    import java.util.List;
    
    public class Test02 {
    	public static void main(String[] args) {
    		List<Student> list = new ArrayList<>();
    		list.add(new Student(5, "张三", "2020-10-01"));
    		list.add(new Student(3, "赵五", "2020-01-01"));
    		list.add(new Student(4, "李四", "2020-05-01"));
    		list.add(new Student(1, "小张", "2001-10-01"));
    		list.add(new Student(2, "小李", "2011-01-01"));
    
    		List<Student> newList = Test02.ListSort(list);
    		for (Student stu : newList) {
    			System.out.println(stu.getId() + "--" + stu.getName() + "--" + stu.getDate());
    		}
    	}
    
    	public static List<Student> ListSort(List<Student> list) {
    		// 通过Collections工具类sort方法传list排序
    		Collections.sort(list, new Comparator<Student>() {
    			@Override
    			public int compare(Student o1, Student o2) {
    				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    				try {
    					Date dt1 = format.parse(o1.getDate());
    					Date dt2 = format.parse(o2.getDate());
    					System.out.println("o1:"+o1.toString());
    					System.out.println("02:"+o2.toString());
    					System.out.println();
    					if (dt1.getTime() > dt2.getTime()) {
    						return 1;// 小的放前面(时间早的)
    					} else {
    						return -1;
    					}
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    				return 0;
    			}
    		});
    		return list;
    	}
    }
    
    class Student {
    	public Student(Integer id, String name, String date) {
    		this.id = id;
    		this.name = name;
    		this.date = date;
    	}
    	
    	@Override
    	public String toString() {
    		return "Student [id=" + id + ", name=" + name + ", date=" + date + "]";
    	}
    
    	private Integer id;
    
    	private String name;
    
    	private String date;
    
    	public Integer getId() {
    		return id;
    	}
    
    	public void setId(Integer id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getDate() {
    		return date;
    	}
    
    	public void setDate(String date) {
    		this.date = date;
    	}
    }
    
    
    展开全文
  • oracle 按字段排序

    千次阅读 2021-07-06 15:56:34
    select * from REVENUE.SEND_MAIL_DETAIL where UNIQUE_ID='${name}' ...前段时间有一个业务场景,需要把数据按照商户号和时间排序,已有字段 日期 acdt 、交易时间 createTime 、 商户号 merc_id 可以通过 ord
  • elementUI全部数据多字段排序
  • Collections.sort多字段排序

    千次阅读 2020-07-31 14:56:14
    Collections.sort(yProducts, new Comparator<CardHeroStoreProductInfo>(){ @Override public int compare(CardHeroStoreProductInfo... //首先按照state由小到大排序 c = p1.getState() - p2.getSt.
  • oracle数据库-按字段排序

    千次阅读 2020-10-25 09:53:12
    应用场景:如果我们按排序且有升序和降序的时候的写法。 排序时,有两个关键字 :asc 表示升序,desc 表示降序; 所以我们在order by 后面添加 asc, desc。 select s.bank_code,s.account_id,s.amount from...
  • SQL语句实现多字段排序

    千次阅读 2020-11-17 16:21:37
    ORDER BY 后可加2个字段,用英文逗号隔开。 1、f1用升序, f2降序,sql该这样写; ORDERBYf1,f2DESC 默认情况下,一般是升序;关键字升序是asc,降序为...4、SQL语句实现多字段一升一降 select a.* from a or...
  • java将list按照时间字段排序

    千次阅读 2019-10-12 16:02:49
    欢迎大家加入京东淘宝捡垃圾群:... ,排序字段为实体类或者map中的字段值即可,代码为按时间降序,升序反过来即可 private static void ListSort(List<User> list) { Collections.sort(list, new Compar...
  • elasticsearch聚合后多字段综合排序

    千次阅读 2020-01-10 11:19:42
    聚合后排序 1.内置排序 聚合内置排序共有_count、_term、_key三种,聚合后默认会根据 _count 降序排列。 _count: 按文档数排序。对 terms 、 histogram 、 date_histogram 有效。 _term: 按词项的字符串值的字母...
  • java list集合根据时间字段排序

    千次阅读 2020-09-19 11:04:14
    // list列表根据元素中的时间字段进行排序 public List listSort2(List<AppChatApiRes> initList) {// 接收实体类list List<AppChatApiRes> list = initList; // System.out.println("排序前----:" + ...
  • mybatis-plus postgresql 字段排序

    千次阅读 2020-10-17 09:18:46
    此时需要用到字段排序的方法 QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.orderByDesc("status").orderByDesc("id"); 可以分别对不同的字段,采取不同的排序方法 ...
  • 时间字段1 时间字段2,这两个字段只有一个有时间,时间字段1有数据,时间字段2就没有,反之亦然,如何实现按时间大小排序(字段1有时间就按字段1,2也是)
  • Spring Data MongoDB 使用多字段排序

    千次阅读 2020-07-08 10:53:22
    直接在Query里面添加with,即可,例如 ... //创建时间排序 Sort createDateSort = new Sort(Sort.Direction.DESC, FIELD_CREATE_DATE); Query query = Query.query(criteria); query.with(rankSort).with(c
  • 排序 为了按照相关性来排序,需要将相关性表示为一个数值。...1. 按照字段排序(评分机制取消) 只有字段排序会使评分机制取消. GET /_search { "query" : { "bool" : { "filter" : { "term" : { "use...
  • Stream流根据多字段排序,有优先级

    千次阅读 2020-07-27 17:10:13
    优先最高排序的放在后面,优先级最低的放在最前面 //按照根据置顶降序,后根据时间降序 msgRecommendedVideoSys = msgRecommendedVideoSys.stream() .sorted(Comparator.comparing(a -> a.getTime(), ...
  • mysql根据时间排序,更新某字段

    千次阅读 2021-02-02 15:05:53
    mysqlsql数据库 现在有一张表,表中已经有4000条数据,其中有一个字段为 order_id,另一字段为pub_time ,原来order_id 是根据数据插入顺序自动+1的,现在我想根据pub_time递增,更新order_id的值为递增,有什么好办法...
  • 调用别人家的接口查询数据,可是接口中查询的结果并没有对结果进行时间排序。于是就用了一下方法对查询的结果集根据时间排序。我用简单的用户类来演示排序过程,做一下记录。 本次测试使用了nutz框架的Json工具类...
  • ElasticSearch学习笔记之十九 多字段排序和字符串排序排序多级排序字符串排序 排序 为了按照相关性来排序,需要将相关性表示为一个数值。在 Elasticsearch 中, 相关性得分 由一个浮点数进行表示,并在搜索结果中...
  • 如何让mysql按照两个或字段排序 1.需求 先按照投票总数进行排序,投票总数一样的话再跟创建时间进行排序提现创建的排在前面 2.实现 T.vote_count:投票总数 T.created_time : 创建时间 ORDER BY T.vote_count ...
  • PostgreSQL 字段分组并按时间排序,组内排序,窗口函数
  • JDK1.8对List指定字段进行排序

    千次阅读 2021-02-27 17:11:01
    import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;.../*** List根据指定字段进行排序**/public class ListStreamTest {public sta...
  • js 表格根据某个时间字段排序

    千次阅读 2018-03-06 11:55:49
    数组排序 数组:dataArr,字段:datetime dataArr.sort(SortByTimeUp('datetime')); 增序排列 function SortByTimeUp(name){ return function(o,p){ var a,b; if(typeof o==="object"&amp;...
  • 由于项目验收的时候突然老板要求必须按照最新的日期时间进行返回数据,好家伙我直接在项目中进行排序的就没有啥用了,那这样只能从源头开刀了 直接上代码: SELECT * FROM `m_check` ORDER BY Chk_Date DESC , Chk_...
  • vxe-table 多字段组合排序

    千次阅读 2020-10-24 19:17:38
    vxe-table 多字段组合排序 默认是单列排序的 那么如何支持列组合排序呢? 可以通过 sort-config.multiple = true 开启列组合排序功能,该功能需要 v3.0+ 才能支持; 启用后就可以列组合排序,升序或倒序组合...
  • 其他参考已不可查,若有问题请联系及时删除...一、多字段排序 二、自定义排序 三、中文排序 四、其他条件排序 一、多字段排序 语法: select * from tablename order by column1, column2; 二、自定义排序 ...
  • select * from 表 a,(select max(time) max, 字段 from 表名 group by 字段) b where a.字段= b.字段 and a.time = b.max

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 316,412
精华内容 126,564
关键字:

多时间字段最新排序