複数のインデックスにまたがる一般的な検索クエリがあります。インデックスの中にはis_published
というフィールドがあり、一部にdate_review
というフィールドがあり、両方にそのフィールドがあります。Elasticsearch:複数のインデックスに存在するフィールドを条件付きでフィルタリングする
フィールドを検索し、上記のフィールドにフィルタをかけるクエリを作成するのには苦労しています。が存在するのは、です。 missing
および/またはexists
を使用して個々のフィールドで必要なものを達成することができましたが、他のバリアントは除外されています。
is_published
が真であるORフィールドがdate_review
将来的にはORフィールドが
は、私は結果で文書を保存しておきたいです
したがって、文書にis_published
があり、偽の場合は削除します。過去に文書にdate_review
がある場合は、削除します。将来、is_published == false
とdate_review
がある場合は削除してください。
これは意味があると思いますか?答えるの目的のために
、文書は次のようになりますと仮定します。現時点では
// Has `is_published` flag
{
"label": "My document",
"body": "Lorem ipsum doler et sum.",
"is_published": true
}
// Has `date_review` flag
{
"label": "My document",
"body": "Lorem ipsum doler et sum.",
"date_review": "2017-01-01"
}
// Has both `is_published` and `date_review` flags
{
"label": "My document",
"body": "Lorem ipsum doler et sum.",
"is_published": true
"date_review": "2017-01-01"
}
、私の[フィルタリングされていない]クエリは次のようになります。
{
"index": "index-1,index-2,index-3",
"type": "item",
"body": {
"query": {
"filtered": {
"query": {
"multi_match": {
"query": "my serach phrase",
"type": "phrase_prefix",
"fuzziness": null,
"fields": [
"label^3",
"body",
]
}
},
"filter": []
}
}
}
}
任意のポインタのために非常に感謝して。
ありがとうございました。
あなたが行方不明/クエリ居住が存在する示しすることはできますか? – Val
私はそれらを誤解していると思います。実際には、[クエリ]をもう一度見直してください。私は本当にESのクエリ言語で混乱してしまいます! – HelloPablo
心配する必要はありません。すべてのインデックスが同じマッピングタイプですか? – Val