elasticsearch,upsert,elastic4s,Scala,elasticsearch,Upsert,Elastic4s" /> elasticsearch,upsert,elastic4s,Scala,elasticsearch,Upsert,Elastic4s" />

Scala 如何在elastic4s中使用父id进行升级

Scala 如何在elastic4s中使用父id进行升级,scala,elasticsearch,upsert,elastic4s,Scala,elasticsearch,Upsert,Elastic4s,我正在使用elastic4s在ElasticSearch中创建索引。我的代码如下: var seqBulkDef = SeqBulkCompatibleDefinition seqBulkDef=seqBulkDef:+request(sha256, parentId, indexMap, ES_INDEX, ES_INDEX_TYPE) val resp = client.execute (bulk (seqBulkDef)).await(duration) def request(sha:

我正在使用elastic4s在ElasticSearch中创建索引。我的代码如下:

var seqBulkDef = SeqBulkCompatibleDefinition
seqBulkDef=seqBulkDef:+request(sha256, parentId, indexMap, ES_INDEX, ES_INDEX_TYPE)
val resp = client.execute (bulk (seqBulkDef)).await(duration)

def request(sha: String, parentId: String, indexMap: Map, index: String, indexType: String): BulkCompatibleDefinition = {
  update(sha) in index / indexType docAsUpsert indexMap parent parentId
}
但是它不适用于
父ID
。我应该如何修改语法。

您需要添加一个first来建立关系,并指定哪个文档类型应该是子类型的父类型

在scala4s中,您需要执行以下操作:

client.execute {
  put mapping "places" / "city" parent ("country") 
}
然后你可以打电话

client.execute {
  update("5") in "places" / "cities" docAsUpsert Map("name" -> "São Paulo") parent "2"
}

怎么了?它是合成静电的吗?它应该如何运行以及它实际上在做什么?谢谢Onilton,没有例外,但问题是parentId被忽略了,当我使用has_child或has_parent搜索时,没有得到任何结果。
def request
签名似乎有误。请把它修好。你调用
request(sha256,parentId,indexMap,ES_INDEX,ES_INDEX_TYPE)
,但是方法是
def request(sha:String,parentId:String,indexMap:Map)
@OniltonMaciel这是一个输入错误,它可以编译并运行得很好。我试过你说的方法,但没有用。当我查询“has\u parent”时,我可以得到一些结果,但当我查询“has\u child”时,我什么也没有得到。我发现_parent变成了子类型中的_源字段之一,这是不正确的。所以我认为这可能是elastic4s的一个缺陷。你能用你试图进行的查询的代码更新这个问题吗?它不会返回你期望的结果?你得到了什么,你得到了什么。欢迎来到堆栈溢出。虽然您的代码可能会提供问题的答案,但请在其周围添加上下文,以便其他人了解它的作用以及它存在的原因。
update(id).in("places/city").docAsUpsert(write(json)) refresh (RefreshPolicy.IMMEDIATE)