web-dev-qa-db-ja.com

Luceneクエリ文字列Elasticsearch「以下」[URI検索]

非常に多くのWebサイトで、範囲クエリを使用してElasticsearchからデータをクエリする方法を教えています。このようなLuceneスタイルクエリ文字列を使用して、Elasticsearchから特定の数以下のデータをクエリしたいと思います。

fieldname:[* TO 100] 

または

fieldname:["*" TO "100"]

私は他の形式で試しましたが、どれもうまくいきませんでした。誰か助けてくれますか?

27
O Connor

クエリ文字列構文( https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html )範囲の組み合わせを使用する必要がありますURI検索( https://www.elastic.co/guide/en/elasticsearch/reference/current/search-uri-request.html

範囲

日付、数値、または文字列フィールドに範囲を指定できます。包括的範囲は角括弧[min TO max]で指定され、排他的範囲は中括弧{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検索

検索URI検索リクエストボディ検索検索シャードAPI検索テンプレートファセット集計サジェスタコンテキストサジェスタマルチ検索APIカウントAPI検証API説明APIパーコレーターこのようなAPIベンチマーク

検索リクエストは、リクエストパラメータを提供することにより、URIを使用して純粋に実行できます。このモードを使用して検索を実行するときにすべての検索オプションが公開されるわけではありませんが、簡単な「カールテスト」には便利です。次に例を示します。

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

100以下のドキュメントを照会したいと思います。

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

PHP APIクライアント

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

より多くのクエリのために.. 参照

要求したクエリ形式..!

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

それが役に立てば幸い..!

2
BlackPOP