尽管使用 dfs_query_then_fetch,Elasticsearch 6.3.1 在云端和本地提供了不同的结果。使用 python 的 elasticsearch 包查询

Elsaticsearch 6.3.1 provides different results on cloud and local despite using dfs_query_then_fetch. Query using python's elasticsearch package

我正在使用 Elasticsearch 查询数据。我查询一个医学术语,在 return 中我得到疾病代码作为输出。这是我的示例查询:

es.search(index="myindex", body={"query": {"match": {"text_field": "search_term"}}}, search_type='dfs_query_then_fetch')
# Expected output - ABC
# Local Output - ABC
# Output on Amazon EMR - XYZ

问题是当我 运行 它在云端时,我的输出完全不同。

我在云端和本地拥有完全相同的索引。尽管如此,云上的结果很奇怪。我们有一个 Amazon EMR 实例,我什至尝试在其中重新创建索引。但是运气不好。

本地 OS - Ubuntu 16.0.4 OS 在 Amazon EMR -Amazon Linux

任何帮助将不胜感激。

尝试在查询数据时使用 "preference" 参数。像这样:

es.search(index="myindex",
    body={"query": {"match": {"text_field": "search_term"}}},
    preference="_primary_first"
)

更新: 从 Elasticsearch 6.x 开始,一些可能的值如“_primary_first”已被弃用,并将在 Elasticsearch 7.0

中完全删除

对于那些回答我的问题的人,感谢他们的努力。

我知道问题出在哪里了。

A​​WS 上有一个 bootstrap 脚本 运行,它启动 elasticsearch 服务并并行运行我的索引创建器 python 文件。

因此,一些请求在索引创建期间超时,因为集群需要一些时间才能启动 运行。所以理想情况下,我的索引是部分创建的,因此结果不同。

希望这对 运行 Amazon EMR 上的 elasticsearch 有帮助。

干杯!