弾性検索1.5から5.1への移行に問題があります。このクエリは、集計に私に正しいdoc_countを与えている集計、クエリコンテキスト、フィルタコンテキストがElasticsearchで機能しない5.1
{
"_source":["_id","spotlight"],
"query":{
"filtered":{
"filter":{
"and":[
{"term":{"gender":"female"}},
{"range":{"lastlogindate":{"gte":"2016-10-19 12:39:57"}}}
]
}
}
},
"filter":{
"and":[
{"term":{"maritalstatus":"1"}}
]
},
"sort":[{"member2_dummy7":{"order":"desc"}}],
"size":"0",
"aggs": {
"maritalstatus": {
"filter": {},
"aggs" : {
"filtered_maritalstatus": {"terms":{"field":"maritalstatus","size":5000}}
}
}
}
}
:1.5クエリ - には、以下の私の弾性検索です。このdoc_countは、クエリコンテキストによって返された結果セットで計算され、フィルタコンテキストは無視されます。
私は弾性検索5.1で同じクエリを書かれている:
{
"_source":["_id","spotlight"],
"query":{
"bool":{
"must":[
{"term":{"gender":"female"}},
{"range":{"lastlogindate":{"gte":"2016-10-19 12:39:57"}}}
],
"filter":{
"bool":{
"must":[
{"term":{"maritalstatus":"1"}}
]
}
}
}
},
"sort":[{"member2_dummy7":{"order":"DESC"}}],
"size":"0",
"aggs": {
"maritalstatus": {
"filter": {},
"aggs" : {
"filtered_maritalstatus": {"terms":{"field":"maritalstatus","size":5000}}
}
}
}
}
しかし、弾性検索5.1で、それは私に集約で間違ったdoc_countを返しています。私はそれがクエリのコンテキストでフィルタを取っていると思いますので、間違ったdoc_coutを返しています。誰かが弾性検索5.1でクエリとフィルタを分離する正しい方法を教えてもらえますか?
あなたは '女性を探していた1.5であなたの第一項のクエリを確認します。
ES 5.1の同等のクエリは、次の(単に
bool/filter
として置き換えられますfiltered/filter
とpost_filter
に改名トップレベルfilter
)であります5.1であなたは '女性'を探していました。 'term'クエリでは大変重要です。したがって、「5.1」の用語クエリを「女性」から「女性」に変更し、結果を確認します。また、タイムスタンプを見ると、 '5.1'クエリの' 5秒 'は' 1.5'クエリのものよりも大きくなります。 – avr