Как получить условные данные из эластичного поиска

#elasticsearch #elasticsearch-aggregation #elasticsearch-dsl

#elasticsearch #elasticsearch-агрегирование #elasticsearch-dsl

Вопрос:

В настоящее время мои данные ES похожи на-

  {
      ..............
      ..............
      "centers" : [

        .................
        .................
        {
          "code" : "ABCA",
          "name": "first_code",
          "level" : 0
        },
        {
          "code" : "XYZX",
          "name": "second_code",
          "level" : 1
        },
        {
          "code" : "XYZX",
          "name": "third_code",
          "level" : -1
        },
        {
          "code" : "QWERTY",
          "name": "fourth_code",
          "level" : 2
        },
        .................
        .................

      ],
      ..............
      ..............
  

}

И я хочу фильтровать записи с таким условием, как это-

фильтруйте записи, где code = «ABCA» и code =»XYZX», с дополнительным фильтрующим кодом.уровень (ABCA) < код.уровень (XYZX)

Ожидаемый O / p:

     {
      "code" : "ABCA",
      "name": "first_code",
      "level" : 0
    },
    {
      "code" : "XYZX",
      "name": "second_code",
      "level" : 1
    }
  

Возможно ли это?

Комментарии:

1. там нет полей code1 и code2 , я полагаю, вы имеете в виду первый и второй элемент вашего массива cenetrs?

2. Я обновил вопрос, чтобы устранить путаницу. В принципе, мне нужен фильтр с двумя условиями одновременно.

Ответ №1:

Вам нужно использовать запрос скрипта elasticsearch для достижения этого,

Пожалуйста, обратитесь к этому ответу SO и этому блогу для получения дополнительной информации и обновлений, если вам все еще нужна помощь, пожалуйста, покажите запрос, который вы пробовали, и были бы рады помочь в дальнейшем.