2013-07-03 65 views
3

我正在嘗試構建ElasticSearch查詢,但沒有得到我期望的結果。任何幫助將非常感激!ElasticSearch嵌套範圍篩選器

映射詳細信息:

我已經索引代表志願者機會文件。在每個機會都是字段:

  1. 標題奧普的,
  2. 總結,
  3. 審批狀態和
  4. 隱私設置。

此外,每個機會文檔具有:

  1. 一個表示的志願者機會非營利主機嵌套非營利文件,
  2. 一個或多個嵌套表示由機會解決的原因引起文件,
  3. 零個或多個代表志願者所需技能的嵌套技能文檔和
  4. 零個或多個代表可用時間段的嵌套移位文檔e爲志願者註冊。

現在,每個嵌套移位文檔都包含一個嵌套calendarBlock文檔,其中包含開始日期時間字段和結束日期時間字段以及可以註冊該換檔的最大志願者人數字段。

查詢

我試圖構造查詢是過濾查詢。查詢字符串從網上的表單傳入。然後,我需要至少三個過濾器編程連接到此查詢:

  1. 一個條件過濾器與「認可」只返回的機會:「Y」
  2. 一個條件過濾器,只返回與機遇「私」 :「n」
  3. 範圍過濾器僅返回至少一次帶有大於當前日期/時間的calendarBlock結束字段的移位機會。 (IE:過濾所有過去的班次。)

前兩個過濾器工作正常。第三個是我卡住的地方。我認爲這個問題可能與複雜的嵌套結構有關。我嘗試了一個嵌套過濾器,但我不確定是否正確執行了此操作。而且日期字段實際上嵌套深兩層。當我嘗試查詢時,我仍然以過去的班次獲得結果。

什麼是正確的方法來完成篩選出所有的機會,沒有未來的班次安排?

+0

什麼是預期的命中和你實際得到什麼?另外幾個鏈接將非常容易可視化。 :) – Sai

+0

你可以發佈你的映射?當你只有一個對象時(例如你的公益領域),也不需要'type:nested'。當您希望在一個查詢的所有部分在一個子文檔中匹配時,您希望查詢命中的子查詢時,您只能使用嵌套文檔。 – ramseykhalaf

+0

Pastle鏈接不再有效。 – drewish

回答

0

我的問題與我格式化日期的方式有關。