У меня есть expiration_date
поле даты в моем Elasticsearch и запрос от пользователя, чтобы иметь возможность "полнотекстового" поиска в этом поле, и у меня есть только один вход для этого.
Так что мое первоначальное отображение:
PUT my_index
{
"mappings": {
"_doc": {
"properties": {
"expiration_date": {
"type": "date"
}
}
}
}
}
и в качестве значения, которое я имею, например: 2021-08-27T10:48:00.293Z
.
Пользователь хотел бы иметь возможность поиска по 2021
, 2021-08
, 2021-08-27
,27-08-2021
и 08-2021
.Для всех этих поисковых терминов у меня есть только одно поле ввода, которое используется для поиска и в других полях (такие как title
, description
и т. Д.).
Моя идея для достижения этой цели состояла в том, чтобы ввести некоторыеmulti-fields
до базового поля.Так что-то вроде:
PUT my_index
{
"mappings": {
"_doc": {
"properties": {
"expiration_date": {
"type": "date",
"fields": {
"yyyy-mm-dd" : {
//what to do here?
},
"yyyy-mm" : {
//what to do here?
},
"yyyy" : {
//what to do here?
},
"mm-yyyy" : {
//what to do here?
},
"dd-mm-yyyy" : {
//what to do here?
}
}
}
}
}
}
}
Но мне интересно, выполнимо ли это таким образом?Возможно ли нечто подобное только на стороне Elasticsearch?Или мне лучше подготовить что-то похожее на моей стороне приложения, отправить его в ES и просто использовать его там?