0

Я использую elasticsearch java-api в сочетании с пружинными данными и имею проблему с индексированием документа. Индексирование работает, но некоторые значения должны быть пропущены. Но сначала я покажу вам мои настройки:Elasticsearch java-api spring-data не должен индексировать поля нулевого значения

Domainobject:

@Document(indexName = "testindex", type = "message") 
public class MessageObject { 

@Id 
private String unid; 

private String message; 

private String secondMessage; 

private String thirdMessage; 

... 

getters & setters 

... 

} 

Интерфейс:

public interface MessageObjectRepository extends ElasticsearchRepository<MessageObject, Long> { 


} 

Услуги:

@Component 
public class MessageService { 

    @Autowired 
    private MessageObjectRepository repository; 


    public void addRegistrationObject(MessageObject msg) { 

     repository.save(msg); 
    } 
} 

Так ....

если я хотите индексировать сообщение, которое имеет только t набор сообщений wo. например «сообщение» и «thirdMessage», и я ухожу из «secondMessage» нулевой ...

Если я просматриваю индекс это приводит к следующему:

"hits": { 
    "total": 1, 
    "max_score": 1, 
    "hits": [ 
     { 
     "_index": "testindex", 
     "_type": "message", 
     "_id": "00113B325ED357B7C1257E2D001D5B4B", 
     "_score": 1, 
     "_source": { 
      "unid": "00113B325ED357B7C1257E2D001D5B4B", 
      "message": "Hello", 
      "secondMessage": null, 
      "thirdMessage": "Third", 
.... 

Моя проблема, я не 't хочу иметь значение null поле значения в моем индексе. Я не могу найти в этом ничего полезного ...

Возможно ли, что поле имеет нулевое значение, чтобы просто игнорировать его? (Не ставьте его в индексе) Так что мой индексируется документ будет выглядеть следующим образом:

"unid": "00113B325ED357B7C1257E2D001D5B4B", 
    "message": "Hello", 
    "thirdMessage": "Third", 

без

"secondMessage": null, 

?

Мне не нужен запрос, который игнорирует поля нулевого значения. Я хочу индекс без полей нулевого значения.

ответ

0

Вы должны быть в состоянии указать следующую @JsonInclude аннотацию на уровне класса

@JsonInclude(value = JsonInclude.Include.NON_NULL) 
@Document(indexName = "testindex", type = "message") 
public class MessageObject { 
    ... 
} 
+0

Спасибо, именно то, что я хочу. :) –