0
使用Elasticsearch 2與Rails 4,使用elasticsearch模型寶石無法使Elasticsearch過濾器工作
一切都很好,甚至地理距離的工作。但是,我無法爲我的生活制定一個簡單的布爾過濾器工作方式。我有一個簡單的布爾'exclude_from_search_results'(當爲true時)應該導致記錄從結果中過濾掉。
這是我在軌控制器查詢(沒有過濾器):
@response = Firm.search(
query: {
bool: {
should: [
{ multi_match: {
query: params[:search],
fields: ['name^10', 'address_1', 'address_2', 'address_3', 'address_4', 'address_5', 'address_6'],
operator: 'or'
}
}
]
}
},
aggs: {types: {terms: {field: 'firm_type'}}}
)
我無論是BOOL或查詢部分中添加了這個,還是境外,但我要麼拿不出文件,或所有文件。 (9000應該匹配)
例子:
@response = Firm.search(
query: {
bool: {
should: [
{ multi_match: {
query: params[:search],
fields: ['name^10', 'address_1', 'address_2', 'address_3', 'address_4', 'address_5', 'address_6'],
operator: 'or'
}
}
],
filter: {
term: {"exclude_from_search_results": "false"}
}
}
},
aggs: {types: {terms: {field: 'firm_type'}}}
)
我也試着將過濾器子句中不同的地方,但要麼得到錯誤或沒有結果。我究竟做錯了什麼??也許簡單的東西...
這裏是我的映射:
"mappings" : {
"firm" : {
"dynamic" : "false",
"properties" : {
"address_1" : {
"type" : "string",
"index_options" : "offsets",
"analyzer" : "english"
},
"address_2" : {
"type" : "string",
"index_options" : "offsets",
"analyzer" : "english"
},
"address_3" : {
"type" : "string",
"index_options" : "offsets",
"analyzer" : "english"
},
"address_4" : {
"type" : "string",
"index_options" : "offsets",
"analyzer" : "english"
},
"address_5" : {
"type" : "string",
"index_options" : "offsets",
"analyzer" : "english"
},
"address_6" : {
"type" : "string",
"index_options" : "offsets",
"analyzer" : "english"
},
"exlude_from_search_results" : {
"type" : "boolean"
},
"firm_type" : {
"type" : "string",
"index" : "not_analyzed"
},
"location" : {
"type" : "geo_point"
},
"name" : {
"type" : "string",
"index_options" : "offsets",
"analyzer" : "english"
}
不勝感激任何指針...