Elasticsearch-按价格和日期进行范围搜索不起作用

时间:2019-10-02 15:39:54

标签: elasticsearch

按价格和日期进行范围搜索对我不起作用。而且我不知道在哪里寻找映射或请求中的错误。 我在文档中为我的字段进行了映射:

#a=[' ',' ',.....] ('a' has 8 classification of fishes)

for i in range(8):
    listing = os.listdir(path+'/'+(a[i]))
    a[i+1] = np.array([np.array(cv2.imread(path+'/'+a[i]+'/'+file)).flatten()for 
file in listing])

这是我按日期提出的要求:

"mappings": {
    "properties": {          
      "sales" : {
        "type" : "nested",
        "properties" : {
          "from" : {
            "type" : "date",
            "format" : "yyyy-MM-dd HH:mm:ss"
          },
          "price" : {
            "type" : "double"
          },
          "to" : {
            "type" : "date",
            "format" : "yyyy-MM-dd HH:mm:ss"
          }
        }
      }
    }
  }

1 个答案:

答案 0 :(得分:1)

您需要指定要搜索的字段。对于您的情况,您想按from嵌套对象下的tosales范围进行过滤。

{
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "path": "sales",
            "query": {
              "bool": {
                "filter": [
                  {
                    "range": { 
                      "sales.from": { #field for from date
                        "gte": "2019-09-01 12:37:55"
                      }
                    }
                  },
                  {
                    "range": {
                      "sales.to": { #field for to date
                        "lte": "2019-09-02 13:38:04"
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  }
}