2016-04-20 3 views
0

Моей целью является выборка записей, соответствующих указанному диапазону дат и uuid (уникальный идентификатор пользователя). Запрос кажется неудачным: screenshot of UUID based search query and resultФильтр запросов ElasticSearch не работает

Если я попробую тот же запрос с именем пользователя, то он работает.

screenshot of Name based search query and result

Я подозревал : символ в строке поиска и попытался избежать его с \, но она по-прежнему не работает.

В чем может быть проблема?

Отображения являются:

{ 
    "top_flows": { 
    "mappings": { 
     "top flows": { 
     "properties": { 
      "name": { 
      "type": "string" 
      }, 
      "postDate": { 
      "type": "date", 
      "format": "strict_date_optional_time||epoch_millis" 
      }, 
      "uuid": { 
      "type": "string" 
      } 
     } 
     } 
    } 
    } 
} 

добавляется в elasticsearch документ JSON является:

doc = { 
         'postDate': timestamp_str, 
         'uuid': uuid, 
         'name': 'sam' 
} 
timestamp = time.time() 
timestamp_str = datetime.fromtimestamp(timestamp).strftime('%Y-%m-%dT%H:%M:%S') 
res = self.__eshandle.index(index="top_flows", doc_type='top flows', id=int(timestamp), body=doc) 
+0

Чтобы сделать это проще, чтобы помочь, пожалуйста, добавьте код для запроса в виде текста. – topher

+0

Можете ли вы показать свое отображение? –

ответ

0

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

отображение Put

PUT /top_flows 
{ 
    "mappings": { 
    "users": { 
     "properties": { 
     "uuid": { 
      "type": "string", 
      "index": "not_analyzed" 
     } 
     } 
    } 
    } 
} 

Сохранить документ

POST /top_flows/blogpost 
{ 
"uuid": "FF:FF:FF:FF" 
} 

Поиск

POST /top_flows/_search 
{ 
    "query": { 
    "match_all": {} 
    } , 
    "post_filter": { 
"term": { 
     "uuid": "FF:FF:FF:FF" 
    } 
    } 
} 
+0

Пробовал новые отображения показывают выше, но все равно не возвратил никаких результатов. Отредактировал вопрос, чтобы показать сопоставления, индексы JSON doc и ES, использующие для ссылки. – Athif

+0

Они не совпадают с вашими сопоставлениями, которые у вас отсутствуют, индекс не проанализирован –

+0

привет, Владимир, я попытался использовать например, вы дали здесь, но даже это не помогло мне. Не уверен, где я точно не прав. Можете ли вы попробовать использовать предоставленный мной JSON-документ и посмотреть, работает ли он для тебя? Может быть, индексирование, которое я пытаюсь сделать, неверно? Все, что я хочу сделать, это вставить документы, индексированные по метке времени, а затем искать их на основе временного диапазона и uuid или пользователя. Я очень новичок в elasticsearch, поэтому извините меня, если я задаю наивные вопросы :) – Athif

0

Ниже разработана, наконец!

GET /top_flows/_search 
{ 
    "query" : { 
       "range" : { 
        "postDate" : { 
        "from" : "now-5m", 
        "to" : "now" 
      } 
     } 
    }, 
    "filter": { 
     "query_string": { 
     "query": "FF\\:FF\\:FF\\:FF\\:FF\\:FF\\:FF\\:FF\\:FF\\:FF\\:FF\\:11\\:8F\\:FF\\:FF\\:FF", 
     "fields": ["uuid"] 
     } 
    } 
} 

Не уверен, что до сих пор, почему ранние подходы не удалось :(