我使用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和_search?search_type=count
API均返回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
。
我很困惑。
_count
和search_type=count
API会返回1332559?有什么建议吗?