Я работаю над проектом, в котором есть строковое поле (имя urlOrContent), и оно может быть небольшим (менее 50 символов) или очень длинным (более 50 символов), и я просто хочу вернуть первые 50 символовкаждый раз на основе конкретного запроса.Моя база данных - эластичный поиск, и моя проблема поднята в этой ссылке , и ответ спрашивающего представляется правильным (поле urlOrContent проанализировано, а текстовое поле не сохранено).Он использует следующий скрипт:
{
"script_fields": {
"substring": {
"script": {
"lang": "painless",
"inline": "params._source.text.substring(0, 100)"
}
}
}
}
Но моя главная проблема заключается в том, что я не могу найти эквивалент JavaSAI-кодаasticsearch.На самом деле, что следует добавить в приведенный ниже код, который возвращает только первые 50 символов поля urlOrContent?Обратите внимание, что в некоторых случаях это поле может даже не содержать 50 символов, и тогда должна быть возвращена вся строка.
String queryString =
EnumLinkFields.CREATE_TIME.getFieldName() + ":(>=" + dateFrom + " AND <=" + dateTo + ")";
QueryBuilder query = QueryBuilders.queryStringQuery(queryString);
SearchResponse response = TRANSPORT_CLIENT.prepareSearch(MY_INDEX)
.setTypes(MY_TYPE)
.setSearchType(SEARCH_TYPE)
.setQuery(query)
.setFetchSource(null, new String[]{EnumLinkFields.USER_ID.getFieldName()})
.setFrom(offset)
.setSize(count)
.addSort(orderByField, sortOrder)
.execute().actionGet();