我正在针对我的ES实例5.4
运行以下查询。我的年份范围和邮政编码工作得很好,但是只要我在价格或范围范围内添加,它就会返回零结果。这是cURL语句(我将其转换为运行ES PHP库,因此我的语法可能不在此处。)
另外,我也提高了价格和价格。 milage到filter
bool没有明显的结果。
在我的ES实例中,我有一个符合这个标准的铃木。
curl -XGET 'localhost:9200/_search?pretty' -H 'Content-Type: application/json' -d'
{
"query" : {
"bool" : {
"must" : {
{"query_string" : {
"query" : "suzuki",
"fields" : {"keywords", "description", "title"}
}},
{"range" : {
"year.keyword" : {
"gte" : 2010,
"lte" : 1980
}
}},
{"range" : {
"price.keyword" : {
"gte" : 0,
"lte" : 10000
}
}},
{"range" : {
"mileage.keyword" : {
"gte" : 0,
"lte" : 100000
}
}},
{"terms" : {
"postal.keyword" : 57013
}}
}
}
},
"highlight" : {
"fields" : {
"*" : { "force_source" : "true", "fragment_size" : 250 }
}
},
"sort" : {
"price.keyword" : { "order" : "asc", "mode" : "min" }
}
}'
这是Suzuki ES记录(其中一些已被清除):
_source: {
index: "",
type: "",
keywords: "2009 Suzuki Sx4 Crossover AWD Crossover 4dr 4A",
description: "2009 Suzuki SX4 Crossover AWD Crossover 4dr 4A",
title: "2009 Suzuki Sx4 Crossover AWD Crossover 4dr 4A,
postal: "57013",
price: "5600",
year: "2009",
make: "Suzuki",
model: "sx4",
mileage: "93012",
engine: "2.0L I4",
transmission: "Automatic",
trim: "AWD Crossover 4dr ",
date_added: "2017-10-01 01:48:36",
date_updated: "2017-10-01 01:48:36"
}
答案 0 :(得分:0)
我更新了几个字段的类型,这似乎可以解决问题。这是我最终发布到我的索引中的内容。
url -XPUT 'localhost:9200/my_index?pretty' -H 'Content-Type: application/json' -d'
{
"mappings": {
"my_type": {
"properties": {
"price": {
"type": "double"
},
"mileage": {
"type": "integer"
},
"postal": {
"type": "integer"
},
"year": {
"type": "date",
"format": "yyyy||epoch_millis"
}
}
}
}
}
'