elasticsearch - 我认为elasticsearch嵌套查询

标签 elasticsearch filter mapping nested-queries

我来自相关的数据库背景,在那里这样的事情很简单,但是我无法弄清楚。我已经尝试学习Elasticsearch了大约一个星期,并且试图找出我认为是嵌套查询的内容。以下是一些示例数据:

PUT /myindex/pets/_mapping
{
   "pets": {
      "properties": {
         "name": {
            "type": "string"
         },
         "pet": {
            "type": "nested", 
            "properties": {
               "name": {"type": "string"}
            }
         }
      }
   }
}

POST /myindex/pets/
{"pet": {"name": "rosco"}, "name": "sam smith"}

POST /myindex/pets/
{"pet": {"name": "patches"}, "name": "sam smith"}

POST /myindex/pets
{"pet": {"name": "rosco"}, "name": "jack mitchell"}

查询看起来像什么,只返回匹配的文档:
  • 所有者名称是“sam smith”
  • 宠物名是“rosco”

  • 我已经尝试过boolmatchnestedfiltered/filter类型查询的混合匹配,但是我一直在出错。这样的东西在错误中脱颖而出:
    nested: ElasticsearchParseException[Expected field name but got START_OBJECT \"nested\"];
    

    这是查询:
    GET /myindex/pets/_search
    {
      "query": {
        "match": {
          "name": "sam smith"
        },
        "nested": {
          "path": "pet",
          "query": {
            "match": {
              "pet.name": "rosco"
            }
          }
        }
      }
    }
    

    我开始认为,由于Elasticsearch的相关性质,我无法针对这一特定目标。

    有任何想法吗?

    最佳答案

    伙计,这些查询有时很棘手...这似乎起作用:

    GET /myindex/pets/_search
    {
      "query": {
        "filtered": {
          "query": {
            "match": {
              "name": "sam smith"
            }
          },
          "filter": {
            "nested": {
              "path": "pet",
              "query": {
                "match": {
                  "pet.name": "rosco"
                }
              }
            }
          }
        }
      }
    }
    

    关于elasticsearch - 我认为elasticsearch嵌套查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32182927/

    相关文章:

    grails - 过滤器返回false时,呈现 View 调用会如何处理?

    eclipse - Hibernate映射找不到资源

    arrays - 嵌套数组元素的 Elasticsearch 查询策略

    elasticsearch - 在 Elasticsearch 中查询具有一个值的属性的多个值

    javascript - 如何修复 Filterizr 响应式画廊堆叠图像的问题?

    email - 考虑到每封邮件都应用了标签,两个人如何使用同一个 Gmail 帐户并为每个用户过滤传入的电子邮件?

    linux - 通过 remap_pfn_range 将 dmam_alloc_coherent 分配的内存映射到用户空间会给出指向错误内存区域的指针

    visual-studio-2008 - nHibernate 和 sqlite 映射

    elasticsearch - 将elasticsearch结果导出到csv

    php - Elasticsearch Prefixfilter特殊字符不起作用