2014-05-15 10 views
19

Su così tanti siti Web viene insegnato come eseguire query sui dati di Elasticsearch utilizzando la query di intervallo. Vorrei interrogare i dati che sono inferiori o uguali a un certo numero di Elasticsearch usando Stringhe di Query Style di Lucene come questa.Lucene Query String Elasticsearch "minore o uguale a" [URI Search]

fieldname:[* TO 100] 

o

fieldname:["*" TO "100"] 

ho provato in altri formati, ma nessuno di questi ha lavorato. Qualcuno può aiutarmi?

+0

Ho aggiornato la mia risposta .. – BlackPOP

+0

se non siete soddisfatti con risposte chiedere di nuovo .. Non abbandonare le domande. Accetta le risposte e aiuta gli altri .. – BlackPOP

risposta

1

penso che si vuole interrogare i documenti con meno uguale a 100.

curl -XPOST "http://hostname:9200/index/try/_search" -d' 
{ 
"query": { 
    "range": { 
     "FieldName": { 
     "lte" : 100 
     } 
    } 
    } 
}' 

client PHP API

array(
'query' => array(
    'range' => array(
     'FieldName' => array(
      array("lte" => 100) 
     ) 
    ) 
) 
); 

per più query .. refer

La query formato che hai chiesto ..!

curl -XPOST "http://hostname:9200/index/type/_search?q=FieldName:[* to 100]" 

Speranza che aiuta ..!

+1

Penso che questa non sia una stringa di query di Lucene. Utilizzo un'API client PHP Elasticsearch e non desidero utilizzare un formato JSON o array come parametro per eseguire query sui dati, ma preferisco utilizzare una stringa di query Lucene. –

+0

quale versione ES stai usando ??? – BlackPOP

+0

È 1.0. Spero che tu mi possa aiutare. –

29

Si vuole utilizzare Query String Sintassi (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html) gamme in combinazione con l'URI di ricerca (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-uri-request.html)

Gamme

Gli intervalli possono essere specificati per i campi data, numerici o stringa. Gli intervalli inclusi sono indicati con parentesi quadre [min TO max] ed esclusivi intervalli con parentesi graffe {min TO max}.

All days in 2012: 

    date:[2012/01/01 TO 2012/12/31] 

    Numbers 1..5 

    count:[1 TO 5] 

    Tags between alpha and omega, excluding alpha and omega: 

    tag:{alpha TO omega} 

    Numbers from 10 upwards 

    count:[10 TO *] 

    Dates before 2012 

    date:{* TO 2012/01/01} 

Curly and square brackets can be combined: 

    Numbers from 1 up to but not including 5 

    count:[1..5} 

Ranges with one side unbounded can use the following syntax: 

age:>10 
age:>=10 
age:<10 
age:<=10 

Note 

To combine an upper and lower bound with the simplified syntax, you would need to join two clauses with an AND operator: 

age:(>=10 AND < 20) 
age:(+>=10 +<20) 

The parsing of ranges in query strings can be complex and error prone. It is much more reliable to use an explicit range filter. 

URI Cerca

Ricerca URI Ricerca Richiesta di corpo Cerca Cerca Frammenti API Ricerca modelli sfaccettature aggregazioni Suggesters Context Suggester Multi Search API Conte API Convalida API Spiegare API Percolator Altri risultati simili API Benchmark

Una richiesta di ricerca può essere eseguita utilizzando esclusivamente un URI fornendo i parametri di richiesta . Non tutte le opzioni di ricerca vengono visualizzate quando si esegue la ricerca con utilizzando questa modalità, ma può essere utile per eseguire rapidamente "test di arricciatura". Ecco un esempio:

$ curl -XGET 
'http://localhost:9200/twitter/tweet/_search?q=user:kimchy' 
Problemi correlati