2015-04-03 2 views
0

Можно ли каким-либо образом преобразовать тип данных в поле при запросе с использованием фильтров. Сценарий, что у меня есть у меня есть документ с полемElasticsearch преобразование типа данных поля при запросе

customData: { 
    "contactCustomFieldMapId":xxxx, 
    "contactId":xxxxx, 
    "customFieldId":45788, 
    "value":"1899", 
    "fieldInputTypeId":0 
}, 
{ 
    "contactCustomFieldMapId":xxxx, 
    "contactId":xxxxx, 
    "customFieldId":45732, 
    "value":"Meet me at noon", 
    "fieldInputTypeId":0 
}, 
{ 
    "contactCustomFieldMapId":xxxx, 
    "contactId":xxxxx, 
    "customFieldId":23233, 
    "value":"233589", 
    "fieldInputTypeId":0 
} 

В приведенном выше поле свойство значение может быть любого типа данных (строки, datatime, или номер), где, как мне нужно, чтобы получить данные, используя (больше, чем меньше). Этот диапазон фильтр должен быть объединен с термином фильтром я сделал запрос, используя фильтр, как Его

"filter": { 
"and": { 
    "filters": [ 
    { 
     "bool": { 
     "must": [ 
      { 
      "and": { 
       "filters": [ 
       { 
        "term": { 
        "customData.customFieldId": 45788 
        } 
       }, 
       { 
        "range": { 
        "customData.value": { 
         "gt": "1000" 
        } 
        } 
       } 
       ] 
      } 
      } 
     ] 
     } 
    } 
    ] 
} 

}

К сожалению, запрос выборкой всех записей с customData.customFieldId, как 45788 (рабочий аналогично тому, как существует фильтр).

Есть ли способ, которым я могу комбинировать фильтр фильтра и диапазона.

ответ

0

Возможно, запрос не очень хорошо сформирован. i использовать это:

{ 
    "filtered": { 
    "filter": { 
     "and": [ 
     { "term": { 
        "customData.customFieldId": 45788 
       } 
     }, 
     { "range": { 
       "customData.value": { 
         "gt": "1000" 
        } 
       } 
     } 
     ] 
    } 
    } 
    } 
+0

Без изменений, принося все записи. Является ли эта проблема связанной с зарегистрированным типом 'customData.value' –

+0

, я не знаю, извините. возможно, вы можете попытаться сделать сопоставление своих данных перед тем, как сделать индекс. отображение позволяет выбрать тип для каждого поля (и формат, например, прописные/строчные буквы/для анализа ect данных) – AlainIb