Запрос диапазона не возвращает результаты в Elasticsearch

Я пытаюсь получить следующий раздел документа, который я проиндексировал через elasticsearch:

temporal: {
begin: "2016-11-30T00:00:00",
end: "2016-12-08T13:55:02"
},

Запрос, который я использую в CURL, поскольку в настоящее время я просто тестирую запросы на локальном хосте, следующий:

curl -XGET 'localhost:9201/_search?pretty' -H 'Content-Type: application/json' -d'
{
    "query": {
        "range" : {
            "timestamp" : {
                "gte": "2015-01-01 00:00:00", 
                "lte": "now"
            }
        }
    }
}
'

сопоставление

temporal: {
properties: {
begin: {
type: "date"
},
end: {
type: "date"
}
}
}

но вышеупомянутый запрос не возвращает никаких успешных обращений, хотя он должен возвращать как минимум упомянутый выше документ.


person Rehan    schedule 03.05.2017    source источник
comment
В вашем документе вверху нет поля timestamp.   -  person Val    schedule 03.05.2017
comment
@val я попытался изменить поле метки времени в запросе на временное, но это все равно не дало никакого результата.   -  person Rehan    schedule 03.05.2017
comment
Вам нужно изменить его на temporal.begin или temporal.end в зависимости от того, какое поле данных вы хотите проверить.   -  person Val    schedule 03.05.2017
comment
@Val, поэтому я хочу проверить временное. начало, и я соответствующим образом отредактировал запрос, но результаты все еще не получены.   -  person Rehan    schedule 03.05.2017
comment
Можешь показать свою карту? curl -XGET localhost:9200/your_index ?   -  person Val    schedule 03.05.2017
comment
@Val, я добавил отображение в описание вопроса, и в настоящее время я работаю над портом 9201.   -  person Rehan    schedule 03.05.2017
comment
В вашем запросе шаблон даты неверен, кажется, он должен быть 2015-01-01T00:00:00 (вам не хватает T)   -  person Val    schedule 03.05.2017
comment
@Val, я пробовал это ... это не проблема, поскольку запрос автоматически исправляет формат в соответствии с документацией.   -  person Rehan    schedule 03.05.2017
comment
Хорошо работает с моим локальным сервером 5.3. Какая у вас версия ЕС?   -  person Val    schedule 03.05.2017
comment
Я знаю, что это похоже на то же самое, но попробуйте query_string с синтаксисом диапазона lucene lucene.apache.org/core/2_9_4/   -  person jordivador    schedule 03.05.2017
comment
он начал работать. мне просто нужно было указать полный путь к объекту в документе.   -  person Rehan    schedule 03.05.2017


Ответы (1)


Предполагая, что вы хотите выполнять поиск по мере публикации (обратите внимание, что я отформатировал ввод даты и времени), это будет временная метка - сопоставление будет.

{
  "temporal" : {
    "mappings" : {
      "doc" : {
        "properties" : {
          "temporal" : {
            "properties" : {
              "begin" : {
                "type" : "date",
                "format" : "strict_date_optional_time||epoch_millis"
              },
              "end" : {
                "type" : "date",
                "format" : "strict_date_optional_time||epoch_millis"
              }
            }
          }
        }
      }
    }
  }
}

Документ индексации/запроса:

curl -XPOST  localhost:9200/temporal/doc/1 -d '
{"temporal": {
"begin": "2016-11-30T00:00:00",
"end": "2016-12-08T13:55:02"
}}';


curl -XGET 'localhost:9200/_search?pretty' -H 'Content-Type: application/json' -d'
    {
        "query": {
            "range" : {
                "temporal.begin" : {
                    "gte": "2015-01-01T00:00:00", 
                    "lte": "now"
                }
            }
        }
    }'
    {
      "took" : 6,
      "timed_out" : false,
      "_shards" : {
        "total" : 108,
        "successful" : 108,
        "failed" : 0
      },
      "hits" : {
        "total" : 1,
        "max_score" : 1.0,
        "hits" : [ {
          "_index" : "temporal",
          "_type" : "doc",
          "_id" : "1",
          "_score" : 1.0,
          "_source" : {
            "temporal" : {
              "begin" : "2016-11-30T00:00:00",
              "end" : "2016-12-08T13:55:02"
            }
          }
        } ]
      }
    }
person Nirmal    schedule 03.05.2017