【问题标题】:How to search an item between two number range in Elastic Search如何在弹性搜索中搜索两个数字范围之间的项目
【发布时间】:2021-06-09 13:20:53
【问题描述】:

我们在 Elastic Search 中有两个字段 startid 和 endid,例如 startid - 3061410 和 endid - 3061450。现在,如果我输入 3061410 和 3061450 之间的任何数字,查询应该获取该项目。单击此处查看弹性索引的快照:- Elastic index snapshot

预期结果快照: Click here

我尝试了以下查询,但没有得到预期的结果:

{ "range": { "startid": { "gte": parseInt(this.selectedOP_no),"lte":+parseInt(this.selectedOP_no)+40 } } }

this.selectedOP_no 是 startid 和 endid 之间的数字,如 3061411

【问题讨论】:

    标签: angular typescript elasticsearch elasticsearch-plugin elasticsearch-dsl


    【解决方案1】:

    由于您有两个字段,因此您需要有两个条件,每个字段一个,如下所示:

    { 
       "bool": {
          "filter": [
             {
                "range": { 
                  "endid": { 
                     "gte": parseInt(this.selectedOP_no) + 40 
                  } 
                } 
             },
             {
                "range": { 
                  "startid": { 
                     "lte":+parseInt(this.selectedOP_no)
                  } 
                } 
             }
          ]
       }
    }
    

    【讨论】:

    • 它不工作。假设selectedOP_no = 3061411 然后 startid 条件返回 false。所以我修改了查询,如 ` { "bool": { "filter": [ { "range": { "endid": { "gte" : this.selectedOP_no } } }, { "range": { "startid": { "lte":this.selectedOP_no } } } ] } }` 现在它似乎在我的尽头。
    • 哦,是的,确实需要切换字段,我已经更新了答案
    猜你喜欢
    • 1970-01-01
    • 2018-07-20
    • 2016-10-15
    • 2021-01-28
    • 1970-01-01
    • 2018-10-13
    • 2015-05-06
    • 1970-01-01
    相关资源
    最近更新 更多