2012-05-14 47 views
2

我正在加载我的sql数据表,并希望根据各种要求得到结果。我在rangequery中遇到问题。当我写这篇:是弹性搜索中存储为字符串的数字吗?

$ curl -X GET 'http://localhost:9200/sample/new/_search?pretty=true' -d ' 
{ query:{range:{price_incl_tax:{gte:1000,lte:1500}}} }' 

结果,其中price_incl_tax=140.0000以及13500.0000也来了。

回答

3

在你的情况下,price_incl_tax似乎被存储为一个字符串。它可能会发生,因为price_incl_tax字段最初被添加为字符串而不是数字。您可以通过运行

$ curl -X GET 'http://localhost:9200/sample/new/_mapping?pretty=true'

索引中的验证字段类型Elasticsearch允许您通过索引或类型创建过程中指定mapping控制单个字段类型。

+0

感谢您的回答。这正是问题所在。 – Vipul

+0

我也想知道映射是否可以更新或是否必须重新创建。 – Vipul

+0

通常,您只能将新字段添加到现有映射。现有字段的字段类型不能更改。所以,在你的情况下,你将不得不重新创建索引。 – imotov