web-dev-qa-db-fra.com

Lucene Query String Elasticsearch "inférieur ou égal à" [Recherche URI]

Sur de nombreux sites Web, ils apprennent à interroger les données d'Elasticsearch à l'aide d'une requête de plage. Je voudrais interroger des données inférieures ou égales à un certain nombre d'Elasticsearch en utilisant la chaîne de requête de style Lucene comme celle-ci.

fieldname:[* TO 100] 

ou

fieldname:["*" TO "100"]

J'ai essayé dans d'autres formats mais aucun n'a fonctionné. Est-ce que quelqu'un peut m'aider?

27
O Connor

Vous souhaiterez utiliser la syntaxe de chaîne de requête ( https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html ) plages combinées avec la recherche d'URI ( https://www.elastic.co/guide/en/elasticsearch/reference/current/search-uri-request.html )

Gammes

Les plages peuvent être spécifiées pour les champs date, numérique ou chaîne. Les plages inclusives sont spécifiées avec des crochets [min TO max] et les plages exclusives avec des crochets {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.

Recherche d'URI

Rechercher l'URI Demande de recherche Corps Rechercher Rechercher Éclats de recherche Modèle de recherche Facettes Agrégations Suggestions Contexte Suggestion API Multi Search API Count API Valider API Explain API Percolator Plus comme ceci API Benchmark

Une demande de recherche peut être exécutée uniquement à l'aide d'un URI en fournissant des paramètres de demande. Toutes les options de recherche ne sont pas exposées lors de l'exécution d'une recherche à l'aide de ce mode, mais cela peut être pratique pour des "tests de boucle" rapides. Voici un exemple:

$ curl -XGET
'http://localhost:9200/Twitter/Tweet/_search?q=user:kimchy'
44
John Petrone

Je pense que vous voulez interroger les documents avec moins de 100.

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

Client API PHP

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

pour plus de requêtes .. se référer

Le format de requête que vous avez demandé ..!

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

J'espère que ça aide..!

2
BlackPOP