【发布时间】:2018-08-19 20:56:28
【问题描述】:
我有一个 ElasticSearch 索引,其中的数据在我复制粘贴到底部时被编入索引。
想法是它有文档,并且文档的“正式名称”在一个数组中。这是因为文件的正式名称在一段时间内有效(即 2014 年至 2015 年期间名称为 X,2016 年至 2018 年期间为 Y)。
我想要的是一个简单的查询,它根据name 属性查找文档,但它在今天有效。
文档地图:
"Company": {
"properties": {
"vatNumber": {
"type": "string"
},
"names": {
"type": "nested",
"include_in_parent": true,
"properties": {
"name": {
"type": "string"
},
"period": {
"properties": {
"validFrom": {
"type": "date",
"format": "dateOptionalTime"
},
"validTo": {
"type": "date",
"format": "dateOptionalTime"
}
}
},
"lastUpdated": {
"type": "date",
"format": "dateOptionalTime"
}
}
}}}
我的尝试:
我使用 NEST(.NET 客户端)。我假设有 2 个总体“挑战”:
- 我需要引用数组中的一个属性(
name) - 我需要
检查
validTo确实是null(忽略另一个 数组中的实体)
但是,在搜索之后,我对这两个很迷茫!
【问题讨论】:
-
您正在寻找的是嵌套查询,您可以在其中指定嵌套字段的路径(此处为names.name 和names.period.validTo)。要检查字段是否为空,请在 bool 查询的 must_not 子句中使用存在查询。
-
@sramalingam24 完美,这让我走上了正确的道路。还没有完全解决,但是因为其他问题。你能提供一个答案吗?然后我会将其标记为已解决:)
-
好交易,应该从这里开始
标签: elasticsearch nest elasticsearch-net elasticsearch-dsl