2015-04-03 176 views
1

Elasticsearch查詢策略,我想找到的色彩效果。在數據庫中,它被記錄在rgb格式:分別代表red, green, and blue值三個數字的陣列。嵌套數組元素

這裏是它是如何存儲在數據庫和elasticsearch記錄(存儲在數組4 RGB色):

"color_data": 
    [ 
     [253, 253, 253], 
     [159, 159, 159], 
     [102, 102, 102], 
     [21, 21, 21] 
    ] 

是否有一個查詢策略,讓我找到similar顏色?即精確匹配還是在rgb值的接近範圍內?

下面是一個方法我想,但尋址方法來訪問數組值不起作用:。

curl -X GET 'http://localhost:9200/_search' -d '{ 
    "from": 0, 
    "size": 50, 
    "range": { 
     "color_data.0.0": { 
      "gte": "#{b_lo}", 
      "lte": "#{b_hi}" 
     }, 
     "color_data.0.1": { 
      "gte": "#{g_lo}", 
      "lte": "#{g_hi}" 
     } 
    } 
}' 

r_lo,r_hi等被設定爲+/- 10從記錄在color_data變量的RGB值)

回答

1
  • 首先,你應該米OVE信道數據,以如果需要簡單的匹配算法中的(±偏差而不得分)分開的字段(或object至少字段)

  • ,然後就可以進行簡單的filter>range查詢,通過你的模糊性閾值的查詢。

  • 如果您需要評分(如何類似的文檔),比您需要執行腳本查詢。看看this article

順便說一句,我強烈建議工作HSL空間,如果你需要這樣的操作,你會得到更好的結果。看看this example

+0

我實現了這個按照該示例腳本搜索查詢,但由於某種原因,它總是返回完整的記錄集......彷彿我問MATCH_ALL:{}。不知道爲什麼會發生這種情況... – diego 2015-05-15 19:58:44