arrays - Elasticsearch : Index Mapping for integer array

标签 arrays indexing integer elasticsearch

我为其中一个文档定义了以下索引映射:

{
   "favorites":{
      "_parent":{
         "type":"activities"
      },
      "properties":{
         "favorite_count":{
            "type":"integer"
         },
         "details":{
            "type":"integer",
            "store":"yes"
         }
      }
   }
}

当我尝试索引以下文档时:

{
      "favorite_count":3,
      "details":[
          1, 25, 4
      ]
}

我收到以下异常:

org.elasticsearch.index.mapper.MapperParsingException: object mapping [details] trying to serialize a value with no field associated with it, current value [1]
    at org.elasticsearch.index.mapper.object.ObjectMapper.serializeValue(ObjectMapper.java:595)
    at org.elasticsearch.index.mapper.object.ObjectMapper.parse(ObjectMapper.java:467)
    at org.elasticsearch.index.mapper.object.ObjectMapper.serializeValue(ObjectMapper.java:599)
    at org.elasticsearch.index.mapper.object.ObjectMapper.serializeArray(ObjectMapper.java:587)
    at org.elasticsearch.index.mapper.object.ObjectMapper.parse(ObjectMapper.java:459)
    at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:507)
    at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:451)
    at org.elasticsearch.index.shard.service.InternalIndexShard.prepareIndex(InternalIndexShard.java:329)
    at org.elasticsearch.action.index.TransportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:203)
    at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction.performOnPrimary(TransportShardReplicationOperationAction.java:521)
    at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction$1.run(TransportShardReplicationOperationAction.java:419)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)

从此链接http://www.elasticsearch.org/guide/reference/mapping/array-type/ ,我相信索引映射没有问题。我做错了什么?

最佳答案

当您具有父/子关系时,您需要在为子文档建立索引时指定父文档。请参阅此处的 Elasticsearch 文档:http://www.elasticsearch.org/blog/managing-relations-inside-elasticsearch/您没有说明如何对这些内容建立索引;通过curl,它应该看起来像这样,其中activity-id是这个收藏夹的父文档的id:

curl -XPOST localhost:9200/favorites?parent=activity-id -d'
{
      "favorite_count":3,
      "details":[
          1, 25, 4
      ]
}'

关于arrays - Elasticsearch : Index Mapping for integer array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19055175/

相关文章:

java - 组合 if-then 语句

java - 将整数从文件传递到数组

javascript - puppeteer 获取 href 数组,然后遍历每个 href 和该页面上的 href

php - 如何根据php中的日期列对mysql结果数组进行降序排序?

c++ - 是否可以从数组初始化字符串 vector ?如果是这样,如何?

python - 如何创建从 Excel 的行和列中提取的多个值的数组

sql - PostgreSQL - 键索引

mySQL LIKE 全文查询

indexing - 如何在生产中有效地建立 "defragment"MongoDB 索引?

ios - 无法将类型 'Int' 的值转换为预期的参数类型 'UInt32'