我使用 elasticsearch-hadoop-2.2 创建了一个索引并将数据索引到其中。HQL 如下所示:
CREATE EXTERNAL TABLE es_external_table (
field1 type1,
field2 type2
) STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES (
'es.batch.size.bytes'='1mb',
'es.batch.size.entries'='0',
'es.batch.write.refresh'='false',
'es.batch.write.retry.count'='3',
'es.mapping.id'='field1',
'es.write.operation'='index',
'es.nodes'='IP:9200',
'es.nodes.discovery'='false',
'es.resource'='my_index/my_type');
insert into table es_external_table select field1, field2... from hive_table1
表 es_external_table 是外部表,hive_table1 是源表。我发现 hive_table1 中有 1332561 个项目。但是,elasticsearch 中只有 1332559 个文档。_count
API 和API都_search?search_type=count
返回 1332559。缺少两个文档。
我curl -XGET 'http://IP:9200/my_index/my_type/my_id?_source=false
用来检查 Elasticsearch 中的数据。并且my_id
来自 hive_table1,它也是 my_index/my_type 中的 _id。全部返回 1332561 "found":true
。
我很困惑。
- my_index/my_type 实际上有多少个文档?
- 如果有 1332561,为什么 API 返回
_count
1332559 ?search_type=count
- 如果有 1332559 个文档,则缺少哪些文档?
有什么建议吗?</p>