我有一个嵌套文档,如:
"someField": "hello",
"users": [
{
"name": "John",
"surname": "Doe",
"age": 2
}
]
据此,https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html,以上内容应匹配:
GET /_search
{
"query": {
"exists" : { "field" : "users" }
}
}
鉴于以下情况不应出现:,
"someField": "hello",
"users": []
但不幸的是两者不匹配。有什么想法吗?
使用以下索引映射:
{
"index_name": {
"mappings": {
"object_name": {
"dynamic": "strict",
"properties": {
"nested_field_name": {
"type": "nested",
"properties": {
"some_property": {
"type": "keyword"
}
}
}
}
}
}
}
}
我需要使用这个查询:
GET /index_name/_search
{
"query": {
"nested": {
"path": "nested_field_name",
"query": {
"bool": {
"must": [
{
"exists": {
"field": "nested_field_name.some_property"
}
}
]
}
}
}
}
}
Elasticsearch版本5.4.3
这对我管用
GET /type/_search?pretty=true
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "outcome",
"query": {
"exists": {
"field": "outcome.outcomeName"
}
}
}
}
]
}
}
}
Elasticsearch博客上提到的示例指的是字符串和字符串类型的数组,而不是嵌套类型。
以下查询应该适用于您:
{
"query": {
"nested": {
"path": "users",
"query": {
"bool": {
"must": [
{
"exists": {
"field": "users"
}
}
]
}
}
}
}
}
此外,您可以参考本期了解更多信息,其中讨论了这种使用模式。
尝试排除其中一个子文档与查询不匹配的顶级文档。 对于下面的示例,我试图排除其中一个嵌套作业具有并且与匹配的所有文档。但是,由于其中一个嵌套作业文档与和公司匹配,因此返回此文档。我使用的是一个嵌套查询,其中公司名称必须匹配,并且过滤器的当前值为false。我如何才能使以下文件不被退回?
我是elasticsearch的新手,对如何进行过滤器、查询和聚合有一些想法,但不确定如何解决下面的问题。我希望能够从下面显示的文档中只查询公司的最新交付(日期和crate_quantity)。我不确定如何去做。有没有办法使用最大聚合从每个文档中只提取最近的交付?
我有一个弹性搜索索引集合,如下所示, 现在我需要通过将与其值匹配来搜索文档。(是一些字段,其值存储在中)例如。对于字段,如果它是,则应与上述文档匹配。 我尝试将其映射为嵌套对象,但我无法编写查询来搜索与其相应值匹配的2个或更多的键id。
我有几个产品的变化,像下面的一个 我正在寻找一个具有以下所有参数的查询 获取某个类别中的所有产品 获取所有黑色的产品 获取尺寸l和M 我当前的查询: 它的工作很好,如果我只搜索1个大小。但是一旦我搜索了2个尺寸,它就不会给出任何记录。我的猜测是,它在每个嵌套变体中寻找所有3个参数,显然它找不到。如何修改要搜索的查询 null 我的第二个问题:
我有这样嵌套条目的文档: 因此,第二个条目中的*是实际的字符串值,而不是通配符。 现在,我正尝试使用以下主体查询具有key1:value3和key2:*的所有文档: 但是,这根本不会返回任何文档。 此外,使用“\\*”作为key2的查询参数也没有帮助。 是否有可能将*作为实际的String值而不是通配符查询? 第一次回答后编辑,并提示Analyzer设置:尝试将我的索引配置为使用映射字符过滤器,如
如何获得空数组和美国的结果和