Hey folks,
< EDITED -- PROBLEM SOLVED -- SEE REPLY BELOW >
I'm trying to use the elasticsearch-ruby and elasticsearch-xpack Ruby gems to search using the new point in time interface now that the scrolling API has been deprecated.
I am able to create the PIT using the xpack library:
pit = client.xpack.open_point_in_time(index: es_index, keep_alive: pit_keep_alive)
According to the Elasticsearch docs, I need to add the pit and the keep_alive to the JSON I use for my query. Here's my test query
{
"version": true,
"size": 1000,
"query": {
"bool": {
"must": [
{
"match_all": {
}
}
],
"filter": [
{
"match_phrase": {
"zip": "87124"
}
}
],
"should": [
],
"must_not": [
]
}
},
"pit": {
"id": "m_2xAwYOZmNjX2NlbnN1c19tYXgWb...truncated for space"
},
"keep_alive": "5m"
}
This is valid JSON and can be parsed into a Hash object and back again without errors. The pit object is syntactically identical to the format defined in the docs.
When I attempt to search using this query, I get this error from the Elasticsearch client:
2.7.2 :072 > response = client.search body: es_body
Traceback (most recent call last):
1: from (irb):72
Elasticsearch::Transport::Transport::Errors::BadRequest ([400] {"error":{"root_cause":[{"type":"parsing_exception","reason":"Unknown key for a VALUE_STRING in [keep_alive].","line":1,"col":969}],"type":"parsing_exception","reason":"Unknown key for a VALUE_STRING in [keep_alive].","line":1,"col":969},"status":400})
Using Ruby 2.7.2, Rails 6.1.3, and the latest versions of the elasticsearch, elasticsearch-transport, elasticsearch-api and elasticsearch-xpack gems.
Jeff Kirk