我正在使用 eland 调用弹性搜索数据。文档很简单,我能够实现它,但是在搜索它搜索的索引时,它es_index_pattern
基本上是一个通配符索引字符串。
from elasticsearch import ElasticSearch
import eland as ed
es = Elasticsearch(hosts="myhost", "port":0000)
search_body={
"bool":{
"filter":[
{"exists": {"field": "customer_name"}},
{"match_phrase": {"city": "chicago"}},
]
}
}
# I am able to get the results if I search the index through "elasticsearch" api. Tried this repetitively and it works every time
results = es.search(index="my_index", body=search_body)
# But, I do not get results (but ReadTimeoutError) if I connect to 'my_index' index via localhost Elasticsearch node using Eland
df = ed.DataFrame(es_client=es, es_index_pattern = 'my_index')
我必须手动输入错误消息,因为我无法将错误复制到我正在使用的环境之外。另外,我的主机和端口会有所不同
...
File ".../elasticsearch/transport.py", line 458, in perform_request
raise e
File "......elasticsearch/transport.py", line 419, in perform_request
File "..... /elasticsearch/connection/http_urllib3.py", line 275, in perform_request
raise ConnectionTimeout("TIMEOUT", str(e), e)
elasticsearch.exceptions.ConnectionTimeout: ConnctionTimeout caused by - ReadTimeoutError(HTTPSConnectionPool(host=myhost', port=0000): Read timed out. (read timeout=10)
我认为这elasticsearch
能够得到结果,因为它调用了确切的索引名称,因此不会遇到超时。但是,Eland
宁可将es_index_pattern
其my_index
用作通配符 ie *my_index
,因此我必须遇到ReadTimeOutError
.
我查看了源代码,看看是否有什么我能做的,所以它没有将索引作为模式搜索,而是完全匹配。但是,我看不到在文档和源代码中搜索确切索引的选项。
如何在 Eland 中搜索准确的索引字符串?
资料来源: