Создание маппинга на Java


(Дмитрий Белоус) #1

Способ создания маппинга, который я использую сейчас:

XContentBuilder mappingBuilder = XContentFactory.jsonBuilder()
	.startObject().startObject("tweet").startObject("properties")
		.startObject("id")
			.field("type", "long")
		.endObject()
		.startObject("text")
			.field("type", "string")
			.field("term_vector", "with_positions_offsets_payloads")
		.endObject()
	.endObject().endObject().endObject();

client.admin().indices().preparePutMapping("twitter")
	.setType("tweet")
	.setSource(mappingBuilder)
	.get();

Способ, которым хотелось бы пользоваться:

RootObjectMapper.Builder mappingBuilder = MapperBuilders.rootObject("tweet")
	.add(MapperBuilders.longField("id"))
	.add(MapperBuilders.stringField("text")
			.storeTermVectorOffsets(true)
			.storeTermVectorPayloads(true)
			.storeTermVectorPositions(true));

client.admin().indices().preparePutMapping("twitter")
	.setType("tweet")
	.setSource(mappingBuilder)
	.get();

Вопрос: как это сделать? Метод setSource() не принимает данных этого типа. Других похожих методов тоже нет.


(Igor Motov) #2

Это билдер для внутреннего класса, который парсит записи. Его нельзя использовать для задания маппинга - он используется с другой стороны - когда уже созданный маппинг парситься во время создания парсера записей.


(Дмитрий Белоус) #3

Понял, напишу свою обёртку, спасибо.


(system) #4