2017-01-13 69 views
0

我有一個這樣的指標:搜索elasticsearch文件,然後查詢嵌套字段

{ 
    "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. 我需要得到「可用性」的數據,所有這些「出租」搜索;僅適用於今天的日期

    • 這是我堅持的部分,我如何查詢所有「出租」的嵌套文件?

回答

0

您需要使用nested query

因爲嵌套的對象進行索引作爲單獨的隱藏文件,我們不能直接對它們進行查詢。相反,我們必須使用嵌套查詢來訪問它們。

嘗試類似:

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

但是,這將影響到第一個搜索結果。 沒有可用日期的文檔不會顯示 –

+0

您對第一個搜索結果有什麼意義? 是的,如果您正在查找特定的可用日期(今天),則無法顯示沒有可用日期的文檔。如果您還想要文件缺少該屬性,則可以使用布爾查詢。 –