【问题标题】:Search for documents in elasticsearch and then query the nested fields在elasticsearch中搜索文档,然后查询嵌套字段
【发布时间】:2017-01-13 17:50:10
【问题描述】:

我有一个这样的索引:

{
    "rentals": {
    "aliases": {},
    "mappings": {
      "rental": {
        "properties": {

         "address": {
            "type": "text"
         },

         "availability": {
            "type": "nested",
            "properties": {
                "chargeBasis": {
                   "type": "text"
                 },
                "date": {
                   "type": "date"
                },
               "isAvailable": {
                  "type": "boolean"
                },
               "rate": {
                  "type": "double"
                }
           }
       }
  }

这是我的用例:

  1. 我需要搜索具有给定地址的所有“出租”。

    • 这很容易并且可以完成
  2. 我需要获取所有搜索过的“租金”的“可用性”数据; 仅适用于今天的日期

    • 这是我卡住的部分,如何查询所有“出租”的嵌套文档?

【问题讨论】:

    标签: elasticsearch nested-documents


    【解决方案1】:

    您需要使用nested query:

    因为嵌套对象被索引为单独的隐藏文档,我们不能直接查询它们。相反,我们必须使用嵌套查询来访问它们。

    尝试类似:

    {
      "query": {
        "nested": {
          "path": "availability", 
          "query": {
            "term": {
              "availability.date": "2015-01-01"
            }
          }
        }
      }
    }
    

    【讨论】:

    • 但这会影响第一个搜索结果。没有可用日期的文件将不会显示
    • 第一个搜索结果是什么意思?是的,如果您正在寻找特定的可用日期(今天),则不会显示没有可用日期的文档。如果您还想要缺少该属性的文档,您可以使用布尔查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    相关资源
    最近更新 更多