我正在尝试更新elasticsearch中的一个对象,但出现了下一条错误消息:
Elasticsearch异常[type=mapper\u parsing\u exception,[errorMessages]的reason=object mapping试图将字段[errorMessages]解析为object,但找到了一个具体值]
This is my mappings:
{
.hierarchies: {
mappings: {
hierarchy: {
dynamic: "strict",
_all: {
enabled: false
},
properties: {
errorFlag: {
type: "keyword"
},
errorMessages: {
properties: {
isFavourite: {
type: "text"
},
message: {
type: "text"
}
}
},
}
}
}
我想更新的信息是:
"errorMessages" -> "{"isFavourite":"yes","message":"hola"}"
我使用的其余客户端连接器和对象UpdateRequest:
UpdateRequest updateRequest = new UpdateRequest(
collection,
type,
id);
updateRequest.doc(document);
updateRequest.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
try {
return esConnector.getRestClient().update(
updateRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
throw new ElasticsearchGenericException("Error updating document " + collection + " > " + type + " id: " + id + " (Reason: " + e.getMessage() + ")");
}
}
文档的值是带有errorMessages的json。这是UpdateRequest对象:
更新{[.hierarchys][hierarchy][ZEqi1GkByxIcUBtfsLRV],doc[index{[null][null][null],source[{“errorMessages”:“{\'isfavorite\':\'yes\',\'message\':\'hola\'”}],脚本化的{upsert[false],检测{noop[true]}
你知道这个问题吗?
errorMessages
应该用如下对象数组表示,而不是字符串值:
{
"errorMessages": [
{
"isFavourite": "yes",
"message": "hola"
}
]
}
问题内容: 我知道在Elasticsearch中,我们可以在文档之间建立子/父关系。 然后,在建立索引时,我可以传递父代ID,以便将子文档和父文档链接起来: 无论如何,在Elasticsearch中建立多对多关系的模型吗? 数据驻留在具有以下架构的MySQL数据库中: 当前这是我的映射(请原谅数组表示法,我在PHP中使用Elastica与我的Elasticsearch服务器通信): 这种方法的问题
问题内容: 这是我的文档架构。是嵌套对象。我需要更新/删除其中的特定文件。我能够使用groovy脚本更新字段。 但是不知道如何更新嵌套对象。 例如,我想将此添加到中。 并且我的文档应更改为: 如果我基于= 122 执行删除,则我的记录应如下所示 问题答案: 要将新元素添加到嵌套字段,您可以像这样进行操作: 要从嵌套字段列表中删除现有元素,可以按以下步骤进行:
问题内容: 我想知道是否有一种方法可以在Elasticsearch中将模糊性应用于_all。 我尝试以下查询未成功。 收到错误。 问题答案: 以下查询对我有用。
问题内容: 我想完全匹配 字段中的字符串,并回去一天拉所有这些记录。我拥有的json也似乎与普通单词匹配。我不确定我要去哪里。我是否需要向此查询添加JSON?我当前拥有的JSON如下所示: 问题答案: 如此处所述:查找精确值,因为在对字段进行索引时已对其进行了分析- 您无法完全匹配其标记(“:”)。每当令牌应可搜索时,映射应为“ not_analyzed”,并且数据需要重新索引。 如果您希望仅轻松
问题内容: 我有一个类似于上述对象的文档结构,我只想返回名称为“ abc”的用户,但问题是它与名称“ abc”匹配但返回了所有数组。我只想要匹配的用户。 映射- 问题答案: 然后,如果您将字段映射为类型,则这是一个好的开始! 使用nested,您可以通过如下查询仅检索匹配的用户名:
问题内容: 我正在使用以下映射: 文件范例: 我的问题是如何检索此文档并按“日期”对嵌套对象“注释”进行排序?结果: 问题答案: 您需要在inner_hits上对进行排序。这将为您提供所需的输出 我使用的源过滤得到的只有作为将被检索里面,但你能避免,如果你想 是5,因为默认值为3,并且在给定的示例中我们有4个对象。 希望这可以帮助!