尽管使用dfs_query_then_fetch,Elsaticsearch 6.3.1在云和本地上仍提供不同的结果。使用python的elasticsearch包进行查询

时间:2018-11-12 07:05:10

标签: elasticsearch amazon-emr elasticsearch-py

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

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实例,我什至尝试重新创建索引。但没有运气。

本地操作系统-Ubuntu 16.0.4 Amazon EMR上的操作系统-Amazon Linux

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

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

更新: 从Elasticsearch 6.x开始,一些可能的值(例如“ _primary_first”)已被弃用,并将在Elasticsearch 7.0中完全删除

答案 1 :(得分:0)

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

我弄清楚了问题所在。

AWS上运行着一个引导脚本,该脚本启动了弹性搜索服务,还并行运行了我的索引创建器python文件。

由于这个原因,由于集群需要一些时间来启动和运行,因此一些请求在索引创建期间超时。因此理想情况下,我的索引是部分创建的,因此结果会有所不同。

希望这对在Amazon EMR上运行elasticsearch的人们很有帮助。

干杯!