我正在使用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
任何帮助将不胜感激。
答案 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的人们很有帮助。
干杯!