2012-08-31 74 views
6

我想運行一個彈性的搜索查詢該組數據由兩個不同字段的組合(經度和緯度)彈性搜索雙方面

curl -XGET http://www.my_server:9200/idx_occurrence/Occurrence/_search?pretty=true -d '{ 
    "query": { 
     "query_string" : { 
      "fields" : ["genus_interpreted","dataset"], 
      "query": "Pica 2", 
      "default_operator" : "AND" 
     } 
    }, 
    "facets": { 
     "test": { 
      "terms": { 
       "fields" :["decimalLatitude","decimalLongitude"], 
       "size" : 500000000 
      } 
     } 
    } 
}' 

它提供了比預期......任何結果的雙號理念?

答案的更多相關者部分是...

_shards":{ 
    "total":5, 
    "successful":5, 
    "failed":0 
}, 
"hits":{ 
    "total":**37**, 
    "max_score":3.9314494, 
    "hits":[{ 

的總點擊數,37是如果我不應用方面的查詢結果。這個總數是面總數的一半(見下文)

"facets":{ 
    "test":{ 
     "_type":"terms", 
     "missing":0, 
     "total":**74**, 
     "other":0, 
     "terms":[ 
      {"term":"167.21665954589844","count":5}, 
      {"term":"167.25","count":4}, 
      {"term":"167.14999389648438","count":4}, 
      {"term":"167.1041717529297","count":4}, 
      {"term":"-21.04166603088379","count":4},..... 

所以,小分組(經度緯度,然後)separetely完成。

請注意,由於多個記錄可以共享緯度(但具有不同的經度)或反之亦然,因此我不能按經度或緯度組合。

+0

可以顯示輸出你? – CharlesB

+0

我不能接受我認爲不能真正解決問題的答案... – user1249791

回答

4

您正在對多個字段使用TermsFacet:經度和緯度。這意味着經度和緯度彙集在一起​​,因爲它們是一個獨特的領域。您會看到每個單個值的條目,可以是緯度或經度。事實上,您返回74個條目證明您的索引中有74個不同的緯度和經度值,這很有意義。你想要達到什麼目的?每個緯度經度對的一個方面入口?在這種情況下,你有兩個選擇:

  • 附加字段添加到其中包含了對自身,然後面就可以了指數
  • 創建使用的一個術語腳本飛latitue經度對。看看documentation瞭解更多。下面是一個例子,應該幫助,不妨一試:
{ 
    "query" : { 
     "match_all" : { } 
    }, 
    "facets" : { 
     "tags" : { 
      "terms" : { 
       "field" : "latitude", 
       "script" : "term + \"_\" + _source.longitude" 
      } 
     } 
    } 
} 
+0

我想完全實現將所有共享完全相同位置(相同經度和緯度)的數據進行分組。添加一個新的字段現在有點複雜,所以我想動態地連接經緯度,使用它來進行分組。 「...」條款:{「fields」:[「decimalLatitude」,「decimalLongitude」],「script」:「term [1]」,「size」:500 works,refering term [1]爲decimalLongitude,但根本不是我所需要的。 事實上,即使我可以加入term [0] term [1],這也無法與索引上的任何東西進行比較,所以無法弄清楚如何得到它... – user1249791

+0

看看我更新的答案。 – javanna

+0

正是我所需要的,謝謝! – user1249791