を動作するようにElasticsearchフィルタを取得できません、elasticsearchモデルの宝石を使用してはRailsの4とElasticsearch 2を使用して
すべてが正常であるとさえ地理ポイントの距離が働いています。しかし、私は単純なブールフィルタの仕事をする方法を私の人生のために解決することはできません。私は単純なブール値 'exclude_from_search_results'を持っています(真の場合)結果からレコードをフィルタリングする必要があります。ここで
は(フィルタなし)レールコントローラの私のクエリです:
@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'}}}
)
私はブール値またはクエリセクション内、またはその外側の両方にこれを追加しましたが、私のどちらかがNOの文書、またはすべての文書を取得していません。
例(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"
}
大歓迎任意のポインタ...