2013-08-08 19 views
5

{"query":{ "match" : { "content" : "2" } }} tüm belgelere uyuyor, tüm içeriği 2 numaralı içeriyor, ancak içeriğin tam olarak 2 olmasını istiyorum, daha azını değil - benim ihtiyacımın bir Java's String ruhu içinde olduğunu düşünüyorum. eşittir.Kesin (alt dizgi değil) Elasticsearch içinde eşleşiyor

Benzer şekilde ikinci sorgu için, belgenin içeriği tam olarak '3 3' olduğunda ve daha fazla veya daha az bir şeyle eşleşmek istiyorum. {"query":{ "match" : { "content" : "3 3" } }}

Elasticsearch'te tam (String.equals) eşleştirmeyi nasıl yapabilirim?

cevap

2

Dizin türünü eşleme ve örnek verilerinizi görmeden, bunu doğrudan yanıtlamak zordur - ama deneyeceğim.

"url" : { 
    "type" : "string", 
    "index" : "not_analyzed" 
} 

Düzenleme:

Düşüncesizce, bu sadece eşlemenizde not_analyzed için content alanın index seçeneğini ayarlamak burada bu cevap (https://stackoverflow.com/a/12867852/382774), benzer söyleyebilirim ben belli değildi Yukarıda gösterilen orijinal yanıtım yeterli. Ben size sorgusuna için örnek kod eklemek gerektiğini ima etmek istemedim, ben not_analyzed (eğer endeks türü haritalama url alan türü string ait olduğunu ve endeksli ancak analiz olmadığını belirtmek gerekir anlamına geliyordu).

Bu, Elastics Search'ün belgelerinizi dizine eklerken alanı analiz etmeyi (belirteç veya belirteç belirleme) zahmet etmemesini söyler - yalnızca belgede var olan dizinde saklayın. Eşlemeler hakkında daha fazla bilgi için, bir giriş için http://www.elasticsearch.org/guide/reference/mapping/ ve not_analyzed'daki özellikler için http://www.elasticsearch.org/guide/reference/mapping/core-types/'a bakın (ipucu: bu sayfada arama yapın).

+0

yerine 20 veya 2.1 Cevabınız için teşekkür ederiz aldık. Peki json sorgusunun tam sözdizimi nedir? Örneğin, "{" sorgu ": { " eşleşme ": { " içerik ":" 2 2 " } }, " içerik ": {" type ":" string "," index ":" not_analyzed " } } 'çalışmıyor. –

+0

Herhangi bir indeksleme ve sorgular yapmadan önce ElasticSearch'e bir harita koymalısınız: http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping/ Verileri aramaya başladığınızda Şu anda ElasticSearch'te saklandınız, çünkü hiçbir şey bulamayacaksınız çünkü belgeler hala “eski” yoldan analiz ediliyor (örneğin beyaz alanda splittng) – jvwilge

2

Official Doc

Sen maçın yerine filtreyi kullanmalıdır.

{ 
"query" : { 
    "constant_score" : { 
     "filter" : { 
      "term" : { 
       "content" : 2 
      } 
     } 
    } 
} 

Ve içerik 2 tam olduğu dokümanlar,

İlgili konular