Elasticsearch定义通配符映射(Elasticsearch define wildcard mapping)
如何在Elasticsearch中定义映射到一系列索引?
Elasticsearch索引通常按日期/时间进行划分,定义到每个日期/时间的映射非常繁琐...
How can I define mapping to series of indexes in Elasticsearch?
Elasticsearch indexes usually split by date/time and it is tedious to define mapping to each date/time...
原文:https://stackoverflow.com/questions/44618914
更新时间:2022-12-23 10:12
最满意答案
试试这个样本
private static IEnumerable<Car> GetCars(string filterByAccessory, bool sortAscending = true) { var cars = new List<Car>(); cars.Add( new Car() { Name = "CAR1", Accessories = new List<Accessory>() { new Accessory() { Name = "ABS Brakes", Value = "1" }, new Accessory() { Name = "Airbag", Value = "1" }, new Accessory() { Name = "Climate Control", Value = "1" }, new Accessory() { Name = "Heated Seats", Value = "1" }, new Accessory() { Name = "HID Xenon Headlights", Value = "1" }, new Accessory() { Name = "Radio", Value = "1" }, new Accessory() { Name = "Quattro", Value = "0" }, new Accessory() { Name = "Sat/Nav", Value = "1" }, new Accessory() { Name = "Side Assist", Value = "0" }, new Accessory() { Name = "Name", Value = "BMW" }, } }); cars.Add( new Car() { Name = "CAR2", Accessories = new List<Accessory>() { new Accessory() { Name = "ABS Brakes", Value = "1" }, new Accessory() { Name = "Airbag", Value = "1" }, new Accessory() { Name = "Climate Control", Value = "1" }, new Accessory() { Name = "Heated Seats", Value = "0" }, new Accessory() { Name = "HID Xenon Headlights", Value = "0" }, new Accessory() { Name = "Radio", Value = "1" }, new Accessory() { Name = "Quattro", Value = "0" }, new Accessory() { Name = "Sat/Nav", Value = "0" }, new Accessory() { Name = "Side Assist", Value = "0" }, new Accessory() { Name = "Name", Value = "Mazda" }, } }); cars.Add( new Car() { Name = "CAR3", Accessories = new List<Accessory>() { new Accessory() { Name = "ABS Brakes", Value = "1" }, new Accessory() { Name = "Airbag", Value = "1" }, new Accessory() { Name = "Climate Control", Value = "1" }, new Accessory() { Name = "Heated Seats", Value = "1" }, new Accessory() { Name = "HID Xenon Headlights", Value = "1" }, new Accessory() { Name = "Radio", Value = "1" }, new Accessory() { Name = "Quattro", Value = "1" }, new Accessory() { Name = "Sat/Nav", Value = "1" }, new Accessory() { Name = "Side Assist", Value = "1" }, new Accessory() { Name = "Name", Value = "Audi" }, } }); var filteredCars = cars.Where(c => c.Accessories.Any(a => a.Name == filterByAccessory)); var sortedCars = sortAscending ? filteredCars.OrderBy(x => x.Accessories.First(a => a.Name == filterByAccessory).Value) : filteredCars.OrderByDescending(x => x.Accessories.First(a => a.Name == filterByAccessory).Value); return sortedCars; }
Try this sample
private static IEnumerable<Car> GetCars(string filterByAccessory, bool sortAscending = true) { var cars = new List<Car>(); cars.Add( new Car() { Name = "CAR1", Accessories = new List<Accessory>() { new Accessory() { Name = "ABS Brakes", Value = "1" }, new Accessory() { Name = "Airbag", Value = "1" }, new Accessory() { Name = "Climate Control", Value = "1" }, new Accessory() { Name = "Heated Seats", Value = "1" }, new Accessory() { Name = "HID Xenon Headlights", Value = "1" }, new Accessory() { Name = "Radio", Value = "1" }, new Accessory() { Name = "Quattro", Value = "0" }, new Accessory() { Name = "Sat/Nav", Value = "1" }, new Accessory() { Name = "Side Assist", Value = "0" }, new Accessory() { Name = "Name", Value = "BMW" }, } }); cars.Add( new Car() { Name = "CAR2", Accessories = new List<Accessory>() { new Accessory() { Name = "ABS Brakes", Value = "1" }, new Accessory() { Name = "Airbag", Value = "1" }, new Accessory() { Name = "Climate Control", Value = "1" }, new Accessory() { Name = "Heated Seats", Value = "0" }, new Accessory() { Name = "HID Xenon Headlights", Value = "0" }, new Accessory() { Name = "Radio", Value = "1" }, new Accessory() { Name = "Quattro", Value = "0" }, new Accessory() { Name = "Sat/Nav", Value = "0" }, new Accessory() { Name = "Side Assist", Value = "0" }, new Accessory() { Name = "Name", Value = "Mazda" }, } }); cars.Add( new Car() { Name = "CAR3", Accessories = new List<Accessory>() { new Accessory() { Name = "ABS Brakes", Value = "1" }, new Accessory() { Name = "Airbag", Value = "1" }, new Accessory() { Name = "Climate Control", Value = "1" }, new Accessory() { Name = "Heated Seats", Value = "1" }, new Accessory() { Name = "HID Xenon Headlights", Value = "1" }, new Accessory() { Name = "Radio", Value = "1" }, new Accessory() { Name = "Quattro", Value = "1" }, new Accessory() { Name = "Sat/Nav", Value = "1" }, new Accessory() { Name = "Side Assist", Value = "1" }, new Accessory() { Name = "Name", Value = "Audi" }, } }); var filteredCars = cars.Where(c => c.Accessories.Any(a => a.Name == filterByAccessory)); var sortedCars = sortAscending ? filteredCars.OrderBy(x => x.Accessories.First(a => a.Name == filterByAccessory).Value) : filteredCars.OrderByDescending(x => x.Accessories.First(a => a.Name == filterByAccessory).Value); return sortedCars; }
相关问答
更多-
下列中不属于面向对象的编程语言的是?[2022-05-30]
a -
如何按字段排序列表(How to Sort a list by field)[2023-01-04]
你可以使用List.Sort l.Sort((p, q) => p.Category.CompareTo(q.Category)); 与LINQ OrderBy相比,它的优点是您可以在原地排序列表,而不必生成IOrderedEnumerable,然后您必须在List 重新转换。 You can use List.Sort l.Sort((p, q) => p.Category.CompareTo(q.Category)); The advantage over the LINQ OrderB ... -
通过首先在列表中查找要对其进行排序的字段来对列表进行排序(Sorting a list by first finding the field to sort on within in the list)[2022-09-13]
试试这个样本 private static IEnumerableGetCars(string filterByAccessory, bool sortAscending = true) { var cars = new List (); cars.Add( new Car() { Name = "CAR1", Accessories = new List () ... -
如何通过内部列表的特定索引对列表列表进行排序?(How to sort a list of lists by a specific index of the inner list?)[2022-03-08]
这是itemgetter的工作 >>> from operator import itemgetter >>> L=[[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']] >>> sorted(L, key=itemgetter(2)) [[9, 4, 'afsd'], [0, 1, 'f'], [4, 2, 't']] 在这里也可以使用lambda函数,但是在这种简单的情况下,lambda函数更慢 This is a job for itemgetter >>> from ... -
排序对象列表(Sorting list of objects)[2023-12-20]
您需要实现compare方法。 public class SortByErrorComparator implements Comparator{ public int compare(WorkflowError obj1, WorkflowError obj2) { return obj1.getErrorCode().compareTo(obj2.getErrorCode()); } } 然后,你可以简单地做: Collections.s ... -
稍作修改,但这也应该有效: List
sortedEmployees = employees.parallelStream() .sorted(Comparator.comparing(Employee::getFirstName) .thenComparing(Employee::getLastName)) .collect(Collectors.toList()); 你看 - 这是关于流的美丽之一 - 将解决方案转换为并行可能就 ... -
如何按长字段对List [2022-09-29]
使用Comparator.comparingLong() : result.stream().sorted(Comparator.comparingLong(DetailsDescription:: getStartTimestamp)).collect(Collectors.toList()); 上面的代码可以工作。 Make use of Comparator.comparingLong(): result.stream().sorted(Comparator.comparingLong(Detail ... -
在Table2.Date上使用OrderBy var list = db.Table1.Where(some selection) .Where(x => x.Table2.Count() > 0) .OrderBy(x => x.Table2.FirstOrDefault().Date)ToList(); Using OrderBy on Table ...
-
无法对列表进行排序(Unable to sort List)[2022-09-27]
类Event包含_timestamp 而不是 IShipmentEvent接口。 将_timestamp添加到接口。 I managed to solve it by casting the parameter to an Event type. So simple I'm surprised I didn't come to think of it sooner: ((Event) shipmentEvent)._timestamp _events = _events.OrderByDescending( ... -
按对象字段排序列表(Sorting List By Object Field)[2020-10-27]
检查你的方法findAll() 。 看起来它给出了一个列表,其中某些值的值为null。 当您通过Collections使用的排序算法调用compare方法时, p1.getCopiesSold或p2.getCopiesSold会给出错误,因为p1或p2为null。 该方法也可能是findAll()返回null而不是List ,或者方法getCopiesSold返回null。 在java中,某些东西的值可以为null而不抛出异常,它只会在您尝试调用方法或使用它执行操作时抛出异常。 因此,null变量可以是抛出 ...