3

文字列の範囲を指定してElasticsearchにクエリを実行することは可能ですか?

私が想像する何か:

サンプルマッピング:

     {
      "resource" : {
        "properties" : {
          "Title" : {
            "type" : "string"
          },
          "type_" : {
            "index" : "not_analyzed",
            "type" : "string"
          },
           "Summary" : {
            "format" : "dateOptionalTime",
            "type" : "date"
          }
        }
      }
    }

サンプルクエリ:

{
  "size" : 10,
  "query" : {
    "filtered" : {
      "query" : {
        "bool" : {
          "should" : [ {
            "text" : {
              "Title" : {
                "query" : "AAA",
                "type" : "phrase_prefix"
              }
            }
          }, {
            "range" : {
              "Title" : {
                "from" : "BBB",
                "to" : "CCC",
                "include_lower" : true,
                "include_upper" : true
              }
            }
          } ],
          "minimum_number_should_match" : 1
        }
      },
      "filter" : {
        "and" : {
          "filters" : [{
            "or" : {
              "filters" : [ {
                "term" : {
                  "type_" : "personType"
                }
              } ]
            }
          } ]
        }
      }
    }
  }
}

インデックスに登録されたデータ:Titles「AAA」、「BBB」、「CCC」、「DDD」の リソース

'AAA'の結果 リソースTitle(範囲は'BBB'および'CCC'を選択しませんでした)

助けていただければ幸いです

4

2 に答える 2

2

はい、可能です。ElasticsearchクエリDSLによって提供されるRangeQueryは、タイプのフィールドにluceneを内部的に使用TermRangeQueryますstring。一方、NumericRangeQueryタイプ番号/日付のフィールドにはLuceneを使用します。

于 2012-09-20T14:05:35.047 に答える
1

デフォルトでは、ElasticSearchはすべてのインデックス付きデータを小文字に保ちます。ただし、クエリを小文字にすることはありません。素晴らしい。

まとめ:クエリ(fromおよびto値)をすべて小文字で送信した後、範囲検索は魅力のように機能します。

于 2012-09-21T09:29:23.547 に答える