Ниже приведено сопоставление поля даты в индексе elasticsearch.
persons:{
"dob":{
"type": "date",
"format": "yyyy-MM-dd"
}
}
Теперь я хочу найти всех людей, у которых день рождения 5 числа любого месяца.
Заранее спасибо.
вы можете сделать это без переиндексации! С переиндексированием даты в поле text вы больше не сможете выполнять поиск с помощью range query по этому полю. Лучше всего использовать безболезненный сценарий doc['dob'].date.dayOfMonth. Взгляните сюда: https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting-expression.html#_date_field_api
Итак, с помощью вышеуказанных решений. Я сделал запрос таким образом
"script_fields": {
"isDOBMatch": {
"script": {
"lang":"painless",
"inline": "doc.dob.date.dayOfMonth==params.dob_match_vals",
"params": {
"dob_match_vals": [**pass the value which u want to match**]
}
}
}
}
Вышеупомянутый запрос возвращает истинное / ложное значение.