我有一个包含嵌套对象的文档,如下所示:
{
"title" : "Title 1",
"books": [{
"book_title": "b title 1",
"year": 2014
}, {
"book_title": "b title 2",
"year": 2015
}]
}
现在,我需要按书名(不是book_title)和年份(比如2014)来过滤书籍。我需要的输出将是:
{
"title" : "Title 1",
"books": [{
"book_title": "b title 1",
"year": 2014
}]
}
当我使用嵌套过滤器时,即使它们不匹配,我也会得到所有嵌套对象。如何仅获取匹配的嵌套对象?
您需要使用以下嵌套inner_hits
功能。
{
"_source": [
"title"
],
"query": {
"bool": {
"must": [
{
"match": {
"title": "title 1"
}
},
{
"nested": {
"path": "books",
"query": {
"term": {
"books.year": 2014
}
},
"inner_hits": {}
}
}
]
}
}
}
在输出中,您将确切地获得期望的结果,即title
字段和嵌套books
数组中的匹配书。
问题内容: 假设我有: 每个产品都有属性。每个属性都有ID和一个值。我可以按属性筛选产品,但现在我要从MongoDB创建“可能的属性”列表。我想找到一种单独从ElasticSearch生成这样的列表的方法(也许只是向MongoDB查询其他数据)。 我需要的是: 这样的聚合看起来如何?获取所有可用属性(按分组)及其所有可能值(在所有产品中)? 问题答案: 您无法在一个查询中做到这一点,但在两个查询中
问题内容: 我目前正在尝试在NEST中实现“ function_score”查询,其功能仅在过滤器匹配时才适用。 看起来FunctionScoreFunctionsDescriptor似乎还不支持添加过滤器。是否会在不久的将来添加此功能? 这是我想要实现的一个超基本示例: 使用基本分数运行ES查询 浏览功能列表,并向其添加过滤器匹配的第一个分数 我目前正在使用Elasticsearch v1.1.
我有一个映射: 我使用三个条件进行筛选: “日志类型”是“爬虫” “2020-05-23”上的“创建数据” “resp”的大小=0 我试图过滤与查询: {"查询":{"bool":{"必须":[{"术语":{"_logType":{"value":"爬虫"}}},{"范围":{"_createdAt":{"gte":"2020-05-23","lte":"2020-05-23","time_zon
我试图建立一个方面的导航使用elasticsearch为一个电子商务网站。 商店产品可以有多个变体。我想到的文档结构如下所示: 我将变体定义为嵌套类型。这样,以下查询将返回包含匹配筛选器的变体的所有文档: 现在,我真的希望获得与过滤器匹配的变体的id,以便在类别页面上显示该产品的变体。因此,在本例中,我希望返回第二个变量(1_b)的id。我只获取ResultSet中返回的文档的id。有什么方法可以
我有多个嵌套文档doc。嵌套查询工作正常,但它们仍然会返回所有嵌套对象(即整个文档),即使搜索查询只匹配少数嵌套对象。但是,它确实将文档作为一个整体进行过滤。 下面是一个例子: 当在地址中搜索时,理想情况下,我应该只获得带有一个嵌套对象的,但我会获得所有嵌套对象。如何筛选返回的嵌套对象? 示例查询: 该查询的输出是和所有员工,而我只想要。
后台返回的对象如下 传入一个值,如果这个值是city的值 就返回 city province 的索引值 传入是prefecture的值 就返回 prefecture city province的值 [0,1] 或者 [0,2,3]这种