我正在尝试为以下文档工作进行映射:
{
"eventDatabase": "abc",
"usageLibraryEventType": "ABC",
"name": "Prionti",
"namespace": "Prionti's namespace",
"latestBuildTimestamp": 1581348323634,
"flattenedEventProperties": [
"User Id"
],
"eventDefinitions": [
{
"buildInfo": {
"baseVersion": "1",
"branch": "master",
"buildName": "something.com",
"orgName": "Prionti's org",
"repoName": "myrepo",
"buildTimestamp": 1581348323634,
"packageName": "myrepo",
"packagePath": "",
"resolvedVersion": "1.2920",
"rootModuleName": "repo",
"rootPackagePath": ""
},
"eventKey": "myEvent",
"eventDefinition": {
"name": "myName",
"namespace": "myNamespace",
"meta": {
"description": "No description available",
"database": "myDatabase",
"owner": null,
"codeOwners": [
"Prionti Nasir"
],
"imgSrc": null,
"isPublic": null,
"yamlSrc": {
"packageName": "my-package",
"packageVersion": "static-1.2920",
"relativePath": "something.yaml"
}
},
"properties": {
"userId": {
"type": "number",
"options": null,
"isOptional": false,
"description": null
}
},
"class": "interaction"
}
}
]
}
我将排除buildInfo和其他一些字段,因此我相应地创建了一个映射:
{
"settings": {
"index": {
"number_of_replicas": "2",
"number_of_shards": "25",
"analysis": {
"analyzer": {
"autocomplete": {
"filter": [
"lowercase",
"autocomplete_filter"
],
"tokenizer": "standard",
"type": "custom"
},
"prefixMatch": {
"filter": [
"lowercase"
],
"tokenizer": "standard",
"type": "custom"
}
},
"filter": {
"autocomplete_filter": {
"min_gram": "3",
"max_gram": "10",
"type": "edge_ngram"
}
}
}
}
},
"mappings": {
"usageLibraryEventType": {
"dynamic": false,
"properties": {
"eventDatabase": {
"properties": {
"name": {
"type": "string"
}
},
"enabled": "false"
},
"eventType": {
"type": "string",
"analyzer": "autocomplete"
},
"name": {
"type": "string",
"analyzer": "autocomplete"
},
"namespace": {
"type": "string",
"analyzer": "autocomplete"
},
"latestBuildTimestamp": {
"type": "long"
},
"flattenedEventProperties": {
"type": "string"
},
"eventDefinitions": {
"properties": {
"eventKey": {
"type": "string",
"index": "not_analyzed"
},
"eventDefinition": {
"properties": {
"name": {
"type": "string",
"index": "no"
},
"namespace": {
"type": "string",
"index": "no"
},
"meta": {
"properties": {
"description": {
"type": "string",
"analyzer": "prefixMatch"
},
"owner": {
"type": "string",
"index": "not_analyzed",
"null_value" : "N/A"
},
"codeOwners": {
"type": "string",
"index": "not_analyzed",
"null_value" : "N/A"
}
}
},
"class": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
}
}
这给了我一个MapperParsingException。eventDefinitions
被认为是JSON对象的每一个都将包含的列表buildInfo
,eventKey
和eventDefinition
。eventDefinition
如您所见,还包含json对象。
@POST
public UsageLibraryEventType indexEventType(UsageLibraryEventType usageLibraryEventType) {
elasticsearchIndexerClient.addDocumentRequest(
new IndexRequest(config.getUsageLibrarySourceTopic(), TYPE)
.source(
"eventDatabase", usageLibraryEventType.getEventDatabase(),
"eventType", usageLibraryEventType.getUsageLibraryEventType(),
"name", usageLibraryEventType.getName(),
"namespace", usageLibraryEventType.getNamespace(),
// fix these field names
"latestBuildTimestamp", usageLibraryEventType.getLatestBuildTimestamp(),
"flattenedEventProperties", usageLibraryEventType.getFlattenedEventProperties(),
"eventDefinitions", usageLibraryEventType.getEventDefinitions()),
config.getUsageLibrarySourceTopic())
.join();
return usageLibraryEventType;
}
(eventDefinitions
是的清单EventDefinitionWithBuildInfo
,每个都EventDefinitionWithBuildInfo
包含buildInfo
,eventKey
和eventDefinition
。EventDefinition
还包含一些字段和一个名为meta
。的对象。尽管我在映射中将所有这些都映射了出来,但是我没有明确地将每个字段的值移交给最后一个当然,我没有办法分别输入每个字段eventDefinitionWithBuildInfo
,然后再eventDefinition
分别输入,因此我必须给它一个列表,其结果是它不会一直映射到最后一个单元。我该怎么办?我应该定义称为EventDefinitionWithBuildInfo
and的 新类型EventDefinition
吗?
@IanGabes是救世主。我度过了一个周末的哭泣,试图使它正常工作。但是我的对象是如此嵌套,如此分层,并且我期望ES能够自己检测内部字段。我向很多人展示了这一点,他们一无所知。然后,当我无望地看着瑞克和莫蒂(Rick
and Morty)掉下来的筹码时,@
IanGabes像天使一样来到,要求我简单地使用杰克逊(Jackson)将对象转换为杰森(Json),并且它不会反序列化为最后一个单元我在做
谢谢。你摇滚,我很烂。
我在elasticsearch中存储了一个JSON字符串作为Object,但在下面的requestPayload作为JSON字符串正文的地方得到了异常:[requestPayload]的对象映射试图将字段[requestPayload]解析为Object,但发现了一个具体的值 方法如下: ====以下实体===== 公共类PushBookingNotification实现Serializable{
我有一个对象,我正试图映射到。现在这个有一个名为的枚举,其中包含一些值。我想使用将它们映射到中的其他枚举值。以下是我到目前为止的代码: 当我尝试编译它时,我得到了错误:
问题内容: 我试图使用Java将DO转换为DTO,并在开始编写自己的工具之前寻找自动化工具。我只是想知道是否有可用的免费工具。 问题答案: Dozer是Java Bean到Java Bean的映射器,可将数据从一个对象递归复制到另一个对象。通常,这些Java Bean将具有不同的复杂类型。 推土机支持简单的属性映射,复杂的类型映射,双向映射,隐式-显式映射以及递归映射。这包括映射集合属性,这些属性
问题内容: 我将开始一个使用Spring和Hibernate管理的REST应用程序项目。 我知道Spring允许您从HTTP Request(带有注释)中获取Java对象。如果此Java对象也是Hibernate实体,是否有冲突?嵌套对象是否起作用(如关系)? 问题答案: 我们正在使用这种方法来简化设计并摆脱许多dto(我们滥用它们太多了)。基本上,它对我们有用。 但是,在我们的REST模型中,我
问题内容: 我很确定,这是有关XML到Java Object转换的许多重复问题之一。但是由于找不到更简单的解决方案,所以我启动了该线程。 我有一个xsd [实际上是我正在设计]和xml。我想按照映射将xml数据自动映射到Java bean 现在我的Java类将是 是否有任何简单的工具/框架可以将数据从XML自动映射到Java Bean [必须支持属性/元素映射]。教程会很好。 顺便说一句,我正在使
这是我的DTO: 这是我的实体: 我想配置我的ModelMapper将Tag#id映射到TagVolumeDTO#idTag。这可能吗?