Зарегистрированный поиск не работает в Druid

#lookup #druid

#поиск #druid

Вопрос:

Я работаю с druid уже короткое время и тестирую функциональность зарегистрированного поиска.

Я уже создал поиск в http://:/druid/coordinator/v1/lookups , следующим образом:

 {
    "__default": {
        "home_post_code": {
          "type": "map",
          "map": {"13210": "Syracuse, NY"}
        }
    }
}
  

Насколько я понял, это сопоставление должно заменить все вхождения со значением «13210» на «Сиракузы, Нью-Йорк» для измерения «home_post_code», объявленного в разделе запроса ниже:

     ...
    },
    "dimensions": [
        "home_post_code",
        {
            "type":"registeredLookup",
            "dimension" : "home_post_code",
            "outputName" :  "home_post_code_description",
            "lookup":"home_post_code",
            "retainMissingValue": true,
            "injective": false
        }
    ],
    ...
  

Проблема в том, что когда я выполняю запрос, значение в столбце «home_post_code_description» не заменяется в соответствии с отображением.

Я могу перечислить поиск в http://:/druid/listen/v1/lookups , поэтому я считаю, что он должным образом зарегистрирован.

Чего мне здесь не хватает? Должен ли я изменить какую-либо конфигурацию чего-либо?

Заранее спасибо.

Ответ №1:

Вы можете попробовать несколько способов, чтобы решить эту проблему.

  1. Удалите все поисковые запросы, которые вы не используете
  2. либо используйте «__default» в качестве имени уровня, либо укажите свой уровень, какой захотите, но не забудьте указать во ВСЕХ ваших runtime.properties с именем druid.поиск.lookupTierIsDatasource=ложный druid.поиск.lookupTier=_default_tier
  3. убедитесь, что GET работает над этим поиском (см. Документацию для get api для поиска)

Пример: Типичный поисковый запрос будет выглядеть следующим образом

 {  
   "intervals":[  
      "Your interval"
   ],
   "granularity":"all",
   "queryType":"groupBy",
   "threshold":1000,
   "dataSource":"your datasource name",
   "aggregations":[  
      {  
         "type":"doubleSum",
         "name":"sum",
         "fieldName":"your field"
      }
   ],
   "dimensions":[  
      {  
         "type":"default",
         "dimension":"your dimention mentioned in lookup- Key",
         "outputName":"anyoutput name",
         "outputType":<"STRING"|"LONG"|"FLOAT">,
         "name":"your registered lookup name"
      },
      {  

          "type" : "extraction",
          "dimension" : "your dimention mentioned in lookup- Key",
          "outputName" : "anyout put name",
          "outputType": "<"STRING"|"LONG"|"FLOAT">,
          "extractionFn" : {
               "type":"registeredLookup",
                "lookup":"your registered lookup name",
                "retainMissingValue":true

            }

      }
   ],
   "metric":{  

   }
}`
```
  

Это будет работать.. После долгих усилий я, наконец, разбил эту проблему на решения

Ответ №2:

Вероятно, ваш запрос неверен. Вы должны использовать ExtractionDimensionSpec с функцией извлечения, являющейся зарегистрированной функцией извлечения поиска.

   "dimensions" : [ {
      "type" : "extraction",
      "dimension" : "home_post_code",
      "outputName" : "home_post_code_description",
      "extractionFn": {
          "type":"registeredLookup",
          "lookup": "home_post_code",
          "retainMissingValue":true,
          "injective":false
      }
  } ]
  

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

1. Мало того, что тип поиска в druid не зарегистрирован, я считаю, что это поиск по карте, поэтому даже при правильном запросе для зарегистрированного поиска он не будет работать.

Ответ №3:

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

 "dimensions": [
    {
        "dimension": "id",
        "type": "extraction",
        "extractionFn": {
          "type":"lookup",
          "lookup": {
            "type":"map",
            "map":{
                "13210": "Syracuse, NY"
            }
          },
          "retainMissingValue":false,
          "injective":false
        }
    }
]