首页 \ 问答 \ Elasticsearch定义通配符映射(Elasticsearch define wildcard mapping)

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;
}

相关问答

更多