2015-11-05 6 views
4

Я новичок в Elastic Search, и я пытаюсь реализовать его, используя Spring-data-elasticsearch.Spring Elastic Search Пользовательские имена полей

У меня есть поля с именами, такими как «Транспортировка», «Номер телефона» в наших эластичных поисковых документах.

Когда я пытаюсь сопоставить поля объекта @Domain с этими объектами, я не получаю никаких данных для них, поскольку я не мог успешно сопоставить эти поля.

Пытался использовать @Field, был разочарован, так как в нем не было свойства «name» для сопоставления с пользовательским именем поля.

Пробовал различные варианты функции GETTER, ни одна из них, похоже, не отображает эти поля.

Я начал задаваться вопросом, нет ли здесь чего-то, чего я здесь не вижу. Как выглядит поле объекта домена, которое должно отображаться в форме, называемой «Транспортировка»?

Любая помощь по оценке

ответ

7

Вы можете использовать нестандартное название. Spring Data ES использует Джексона. Таким образом, вы можете использовать @JsonProperty("your_custom_name") для того, чтобы пользовательское имя в ES Mapping

, например:

@Document(indexName = "your_index_name", type = "your_type_name") 
public class YourEntity { 
    .... 
    @JsonProperty("my_transportation") 
    @Field(type = FieldType.String, searchAnalyzer = "standard", indexAnalyzer = "standard", store = true) // just for example 
    private String myTransportation; 
    .... 
} 

Примечание: Я сожалею, во всяком случае, мой английский плохо ..: D

+0

Понял, работы как и ожидалось. – Vsoma

+0

Использование @JsonProperty работает хорошо в сохранении, но не может работать в запросах. [Невозможно создать пользовательские запросы для полей сущностей с символами подчеркивания] (https://groups.google.com/forum/#!topic/spring-data-elasticsearch-devs/L0Ysohm8iqc) –

+1

Как только '@ JsonProperty' значение отличается от имени поля в POJO, запросы 'Repository' не работают ...: / –