Я использую spring-data-эластичный поиск для грубых операций в упругом поиске.
Работает только метод сохранения данных в упругом поиске и метод findById.
findAll и findBy ... метод не работает и выдает пустой ответ.
Я пытался с некоторыми другими версиями в POM
После некоторой отладки я обнаружил, что метод findById фактически отправляет запрос HTTP GET, а findAll / findBy ... отправляет запрос HTTP POST.
В обоих случаях GET / POST эластичный поиск возвращает ответ с данными, которые я проверял на wireshark. который бегал по местному. Я могу видеть попадания в ответ на вызов метода findAll на Wireshark, но это совпадения, которые мы не получаем через репозиторий.
Если я вижу ответ с данными, это означает, что упругий поиск и создание запроса - это нормально. , но проблема заключается в использовании данных в JPA. JPA на самом деле занимается потреблением.
Понятия не имею, что делать дальше.
Класс модели данных
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Document(indexName = "data", type = "_doc")
public class Data {
@Id
private String id;
private String title;
@Field(type = FieldType.Text)
private Status status;
private String description;
}
Класс репозитория
@Repository
public interface DataRepository extends ElasticsearchRepository<Data,String> {
default <S extends Data> S saveWithKafkaPush(S s){
S s1 = save(s);
KafkaProducer.produceMessage(s);
return s1;
}
default <S extends Data> Iterable<S> saveAllWithKafkaPush(Iterable<S> iterable){
Iterable<S> s = saveAll(iterable);
return s;
}
Optional<Data> findByStatus(Status status);
}
Статус Enum
public enum Status {
UNTITLED,
DRAFT,
REVIEW,
APPROVED,
PUBLISHED;
}
Класс обслуживания
@Autowired
private DataRepository dataRepository;
public Data findByStatus(Status status){
Optional<Data> data = dataRepository.findByStatus(status);
return data.isPresent()? data.get() : null;
}
public Data save(Data data){
return dataRepository.save(data);
}
public void deleteData(String id){
dataRepository.deleteById(id);
}
Метод findByStatus не работает, но saveDataData работает нормально.