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在内部使用 luceneTermRangeQuery作为类型字段string。另一方面,它使用 luceneNumericRangeQuery作为数字/日期类型的字段。

于 2012-09-20T14:05:35.047 回答
1

默认情况下,ElasticSearch 将所有索引数据保持小写。但是,它不会小写查询。伟大的。

总结一下:在以小写形式发送查询(fromto值)之后,范围搜索就像一个魅力。

于 2012-09-21T09:29:23.547 回答