Elasticsearch allows the data, that is stored in a document, to be not only of elementary types, but also of a range of types, see the documentation . With a short example I will explain this range type and how to use it in Spring Data Elasticsearch (the current version being 4.0.3).
For this example we want be able to answer the question: “Who was president of the United States of America in the year X?
A couple of months ago I published the post Using geo-distance sort in Spring Data Elasticsearch 4 . In the comments there came up the question “What about searching within a distance?”
Well, this is not supported by query derivation from the method name, but it can easily be done with a custom repository implementation (see the documentation for more information about that).
I updated the example – which is available on GitHub – and will explain what is needed for this implementation.
When using Spring Data Elasticsearch (I am referencing the current version 4.0.2) , normally the name of the index where the documents are stored is taken from the @Document annotation of the entity class – here it’s books:
@Document(indexName="books") public class Book { // ... } Recently in a discussion of a Pull Request in Spring Data Elasticsearch, someone told that she needed a possibility to extract the name from the entity itself, as entities might go to different indices.
In Spring Data Elasticsearch – at the time of writing, version 4.0 is the current version – the name of an index is normally defined by the @Document annotation on the entity class. For the following examples let’s assume we want to write some log entries to Elasticsearch with our application. We use the following entity:
@Document(indexName = "log") public class LogEntity { @Id private String id = UUID.randomUUID().toString(); @Field(type = FieldType.
The release of Spring Data Elasticsearch in version 4.0 (see the documentation) brings two new features that now enable users to use geo-distance sorts in repository queries: The first is a new class GeoDistanceOrder and the second is a new return type for repository methods SearchHit<T>. In this post I will show how easy it is to use these classes to answer questions like “Which pubs are the nearest to a given location?
After working on Spring Data Elasticsearch for nearly a year now, I’m proud that I will have a talk “ Next Level Elasticsearch Integration with Spring Data Elasticsearch ” at Spring I/O 2020 in Barcelona!
Edit: Spring I/O is postponed to October 2020 due to Covid-19.
Edit 2: Alas the conferebnce was cancelled.
what’s it all about In this post I show how to implement an annotation-based Logger injection in Spring when writing the application with Kotlin .
The used technique is quite far from new, basically what I do is implement a BeanPostProcessor which scans the properties of the beans for fields annotated with a custom annotation and sets these fields to a Logger instance. Examples how to implement this in Java can be found on the web, here I show the Kotlin version.
When a Spring-Boot application is deployed on OpenShift, it can be reached both with a HTTP URL and a HTTPS URL. This is because OpenShift runs a proxy in front of the application which in case of HTTP just routes the request to the application. If a request comes in via HTTPS, the proxy does all the encryption handling with the client and then passes the decrypted request on to the application – on the HTTP channel – and encrypts the response before sending it to the client.
Note to self: When using Spring-Boot, use application.conf as a base configuration for the needed values. Configuration values for the specific profile go into the application-<profile>.config file.
Profiles are activated by using either the -Dspring.profiles.active=<profile> VM flag or --spring.profiles.active=<profile> commandline arg.
This post describes how to create and deploy a Spring-Boot application to RedHat OpenShift (version 2) when the application is using Java 8.
Edit 2015-10-04: In this newer post I show how to not install a custom JDK. So you should first read this post and then the linked one for additional information.
Normally deploying a Spring-Boot application on OpenShift is not too much pain and is explained in the Spring-Boot documentation.