我在ES 1.3.4和JDBC For MySql 1.3.4.4的本地实例上拥有River
这条河工作得很好,并在ES中导入数据。我遇到的问题是我的一个字段是文本字段,并且其中包含空格。例如“实时计算器”。ES将其索引为“实时”,“时间”和“计算器”,而不是“实时计算器”。
所以我正在使用下面提到的JSON创建映射:
{ "sale_test": { "properties": { "Client": { "index": "not_analyzed", "type": "string" }, "OfferRGU": { "type": "long" }, "SaleDate": { "format": "dateOptionalTime", "type": "date" }, "State": { "type": "string" } } } }
和命令:
curl -XPUT http://localhost:9200/my_index/_mapping/my_type
但是我得到以下提到的错误:
> {"error":"MapperParsingException[Root type mapping not empty after > parsing! Remaining fields: [sale_test : > {properties={Client={type=string, index=not_analyzed}, > OfferRGU={type=long}, SaleDate={type=date, format=dateOptionalTime}, > State={type=string}}}]]","status":400}
当我尝试使用下面提到的命令查看当前映射时:
curl -XGET http://localhost:9200/dgses/sale_test_river/_mapping
我只有这个: {}
谢谢你的帮助。
您的类型不一致,在API调用中,类型为 my_type
然后在JSON消息中变成 sale_test 。
具有一致的类型将解决您的问题:
curl -XPUT http://localhost:9200/my_index/_mapping/sale_test -d ' { "sale_test": { "properties": { "Client": {"type": "string", "index": "not_analyzed" }, "OfferRGU": { "type": "long" }, "SaleDate": { "type": "date", "format": "dateOptionalTime" }, "State": { "type": "string" } } } }'
在这里,您既有 新索引 又有 新类型 :
更正索引和类型给我:
curl -XGET http://localhost:9200/my_index/sale_test/_mapping?pretty { "myindex" : { "mappings" : { "sale_test" : { "properties" : { "Client" : { "type" : "string", "index" : "not_analyzed" }, "OfferRGU" : { "type" : "long" }, "SaleDate" : { "type" : "date", "format" : "dateOptionalTime" }, "State" : { "type" : "string" } } } } } }