ElasticSearch Nested types with List Inside 嵌套类型

标签 elasticsearch nested nosql

是否可以在 ElasticSearch 中使用带有列表的嵌套类型?一个例子就是我在想的是这样的

{
  "name" : "Zach",
  "car" : [
    {
      "make" : "Saturn",
      "model" : "SL",
      "colors": ["Red","Blue","Green"]
     },
    {
      "make" : "Saturn",
      "model" : "Imprezza",
      "colors": ["Pink","Green"]
    }
  ]
}

我将如何查询这样的 FF?

1) 我想询问所有人,他们的汽车是用“Saturn”“制造”的,颜色是“绿色”

2)我想查询所有人他们的汽车颜色是“绿色”还是“粉红色”

最佳答案

是的。以下是我的做法:

第 1 步。设置映射:

PUT /index_name
{
  "mappings": {
    "type_name": {
      "properties": {
        "name": {
          "type": "string"
        },
        "car": {
          "type": "nested",
          "properties": {
            "make": {
              "type": "string"
            },
            "model": {
              "type": "string"
            },
            "colors": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}

第 2 步。填充索引:

PUT /index_name/type_name/1
{
  "name": "Zach",
  "car": [
    {
      "make": "Saturn",
      "model": "SL",
      "colors": [
        "Red",
        "Blue",
        "Green"
      ]
    },
    {
      "make": "Saturn",
      "model": "Imprezza",
      "colors": [
        "Pink",
        "Green"
      ]
    }
  ]
}

第三步,查询索引。 注意:您需要使用 bool query为了检索具有多个查询参数的文档。

GET /index_name/type_name/_search
{
  "query": {
    "nested": {
      "path": "car",
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "make": "Saturn"
              }
            },
            {
              "match": {
                "colors": "Green"
              }
            }
          ]
        }
      }
    }
  }
}

关于ElasticSearch Nested types with List Inside 嵌套类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24520693/

相关文章:

elasticsearch - 在Elasticsearch中更新文档未将自定义分析器应用于字段数据

elasticsearch - 在Elasticsearch中映射openNLP或StanfordNLP

MySQL 将不同表中的列合并到同一行中

python - 如何使用内键 :value pair 将字典列表转换为字典字典

java - MongoDB:如何使用 Java(使用或不使用 Spring)将一个带有别名的查询中的特定字段添加到另一查询的结果中?

database - Membase 和 Couchbase 有什么区别?

couchdb - 如何使用 elasticsearch river 插件索引 couchdb 文档的所有修订

elasticsearch - 过滤数组包含任何给定值的项目

python - 比较嵌套列表 Python

database - BASE 术语解释