ElasticSearch在FromX和ToY字段中搜索指定的值

时间:2019-02-13 08:48:18

标签: elasticsearch

我要查询由两个FromXToY字段的值构成的范围内的指定值,并按{{1}作为Title字段来搜索text }查询。

此示例显示了我的目标:

query_string

示例查询:

Id | FromX | ToY | Title
-----------------------------
 1 |   1   |  7  |  Mohammad
 2 |   2   |  3  |  Ali
 3 |   1   |  6  |  MohammadAli
 4 |   2   |  5  |  MohammadReza
 5 |   1   |  2  |  AliReza
 6 |   2   |  2  |  Sayed Ali

查询结果:

value: 2 AND title: *Ali*

更新1:

  • 在示例数据和结果中添加带有Id | FromX | ToY | Title ----------------------------- 2 | 2 | 3 | Ali 3 | 1 | 6 | MohammadAli 5 | 1 | 2 | AliReza 6 | 2 | 2 | Sayed Ali 的最后一条记录。

1 个答案:

答案 0 :(得分:1)

以下查询应该给您您期望的内容:

{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "FromX": {
              "lte": 2
            }
          }
        },
        {
          "range": {
            "ToY": {
              "gte": 2
            }
          }
        },
        {
          "query_string": {
            "query": "*ali*"
          }
        }
      ]
    }
  }
}

但是,不应不惜一切代价避免使用前缀通配符,因为它们会影响查询的性能。您可能应该使用ngrams分析标题字段,而对Title字段进行常规匹配查询。