[filtrelenmiş] için kayıtlı [sorgu] yok


108

Sonuçları filtrelemem gereken bir sorgum var.

Bu benim sorgum

{
    "query": {
        "filtered": {
            "query": {
                "multi_match": {
                    "default_operator": "AND",
                    "fields": [
                        "author",
                        "title",
                        "publisher",
                        "year"
                    ],
                    "query": "George Orwell"
                }
            },
            "filter": {
                "terms": {
                    "year": [
                        1980,
                        1981
                    ]
                }
            }
        }
    }
}

Diyerek bir hata alıyorum no [query] registered for [filtered]. Açıkça filtrelenmiş alan için bir sorgum var. Elasticsearch sayfasındaki filtrelenmiş sorgu belgelerinde verilen biçimi takip ediyorum. https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html

Yanıtlar:


185

filteredSorgu kaldırıldı ve ES 5.0 kaldırılmıştır. Şimdi bool/must/filterbunun yerine sorguyu kullanmalısınız.

{
    "query": {
        "bool": {
            "must": {
                "multi_match": {
                    "operator": "and",
                    "fields": [
                        "author",
                        "title",
                        "publisher",
                        "year"
                    ],
                    "query": "George Orwell"
                }
            },
            "filter": {
                "terms": {
                    "year": [
                        1980,
                        1981
                    ]
                }
            }
        }
    }
}

İki sorgu arasındaki farklar şunlardır:

3,4c3,4
<         "bool": {
<             "must": {
---
>         "filtered": {
>             "query": {
6c6
<                     "operator": "and",
---
>                     "default_operator": "AND",

Not: Baktığınız referans sayfası, ekin "silinmiş sayfalarında" yer almaktadır, dolayısıyla artık ana belgelerin bir parçası değildir.


4
5.5 kullanırken, default_operator, multi_match sorgusundan ve val'den kaldırılmış gibi görünüyor, bu yüzden bu yanıtı güncellemeye değer, çünkü yukarıdaki işe yarayacağını varsayarak beni yanlış yola yönlendirdi, sonra bunu gerçekleştirmek için sorguyu alanlarımla eşleşecek şekilde değiştirdim. işe yaramadı! Bu benim için basit bir düzeltmeydi ama sadece varsayılan operatörü kaldırıp gelecekteki okuyucular için düzenlemeye değer olabilir, Hata şu: [multi_match] sorgusu [default_operator] 'ı desteklemiyor
Birdy

3
@Birdy aslında parametre adlandırılmış operatorve değil default_operator, cevabımı değiştirdim, bunun için üzgünüm.
Val

Val - Bir dakikanız olursa lütfen bir logstash sorununda bana yardım eder misiniz, 48 saatten fazla bir süredir kafamı masadan kaldırıyorum haha ​​ve bu alanda günü kurtarmaya yardımcı olabilecek bir uzman olduğunu biliyorum haha, Teşekkürler, eğer yapabilirsen sonsuza kadar borç içinde olurum !! stackoverflow.com/questions/45577572/…
Birdy

Teşekkürler, ES5.1 örneğini 7.1'e yükseltirken bu benim için çalıştı
jhob101
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.