嵌套查询是否用于 ElasticSearch 中的对象映射?
Are nested queries used for object mappings in ElasticSearch?
假设我们在 ElasticSearch 中有一个文档模型,它有一个字符串 (registration
) 和一个名为 currentname
的对象数据类型,然后它有一个名为 name
的值。我在底部添加了模型JSON。
这个怎么查询?
由于metadata
项目没有使用nested关键字,我假设我们可以在没有nested的情况下获取数据。但是,由于 metadata
确实有一个属性值,我不确定。
我的尝试:
我试过简单模型(NEST):
var res2 = client.Search<dynamic>(s =>
s.Index("myindexname").AllTypes().
Query(q => q.
Bool(b => b.
Must(mu => mu.
Term(te =>
te.Field("metadata.currentname.name").Value(query))))));
这 return 没有任何文件。
但是,如果我必须使用嵌套查询,我不完全理解为什么(是因为这些对象基本上是不同的索引吗?)。 DSL(或 NEST 代码)如何进行正确的调用?
文档模型:
properties: {
Company: {
properties: {
registration: {
type: "string"
},
metadata: {
currentname: {
properties: {
name: "string"
}
}
}
}
}
}
嵌套查询仅用于嵌套数据类型
假设我们在 ElasticSearch 中有一个文档模型,它有一个字符串 (registration
) 和一个名为 currentname
的对象数据类型,然后它有一个名为 name
的值。我在底部添加了模型JSON。
这个怎么查询?
由于metadata
项目没有使用nested关键字,我假设我们可以在没有nested的情况下获取数据。但是,由于 metadata
确实有一个属性值,我不确定。
我的尝试:
我试过简单模型(NEST):
var res2 = client.Search<dynamic>(s =>
s.Index("myindexname").AllTypes().
Query(q => q.
Bool(b => b.
Must(mu => mu.
Term(te =>
te.Field("metadata.currentname.name").Value(query))))));
这 return 没有任何文件。
但是,如果我必须使用嵌套查询,我不完全理解为什么(是因为这些对象基本上是不同的索引吗?)。 DSL(或 NEST 代码)如何进行正确的调用?
文档模型:
properties: {
Company: {
properties: {
registration: {
type: "string"
},
metadata: {
currentname: {
properties: {
name: "string"
}
}
}
}
}
}
嵌套查询仅用于嵌套数据类型