2016-04-01 25 views
0

I (ben aralık filtresinde belirtilen tarih aralığında Kimliği "abc_12-def için indexname sorgulamak istiyorsanız aşağıdaki sorgu.elasticsearch sorgusunda nasıl davranılır VE koşulu?

Fakat aşağıda sorgu yanı farklı kimlik değerlerini getiriliyor olması örneğin: abc_12-eDF, abc_12-PGF vs) ve bir ver vE burada durum sayesinde nasıl tarih aralığı dışında herhangi bir tavsiye bu sonbaharda Sen AND aka MUST durum için Bool query kullanmak gerekir

curl -XPOST 'localhost:9200/indexname/status/_search?pretty=1&size=1000000' -d '{ 
"query": { 
"filtered" : { 
    "filter": [ 
    { "term": { "ID": "abc_12-def" }}, 
    { "range": { "Date": { "gte": "2015-10-01T09:12:11", "lte" : "2015-11-18T10:10:13" }}} 
    ] 
    } 
    } 
    }' 
+0

Sizin "id" alanınız analiz edildi gibi görünüyor? – Richa

+0

Bunun ne anlama geldiğini açıklayabilir misiniz? – Sweet

+0

G GET/index_name/type_name/_mapping' kullanarak eşlemeleri kontrol edin ve söz konusu adresi belirtin. – Richa

cevap

0

?..

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "term": { 
      "ID": "abc_12-def" 
      } 
     }, 
     { 
      "range": { 
      "Date": { 
       "gte": "2015-10-01T09:12:11", 
       "lte": "2015-11-18T10:10:13" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

Ayrıca, varsayılan olarak tüm alanlar standard analyzer kullanılarak analiz edilir, yani abc_12-def [abc_12, def] olarak belirlenir. term query dizeyi analiz etmiyor.

Tam eşleşme arıyorsanız, alanı not_analyzed olarak işaretlemelisiniz. not_analyzed olarak nasıl haritalandırılır burada açıklanmaktadır.