Elasticsearch reply for expired scroll context - elasticsearch

When using the Elasticsearch scroll API to receive query results that have many matches you must provide a scroll time-out amount. Elasticsearch does not guarantee keeping the scroll context alive beyond that time-out (scrolls are processed as a kind of "session" that Elasticsearch remembers).
But what happens if you ask Elasticsearch for another "page" after that time-out expires? What response do you get from Elasticsearch? Does it have a distinctive HTTP status code? Or distinctive fields in a JSON response body?

The response status code is 404. You also get an error message explaining what happened.
{
"error": {
"caused_by": {
"reason": "No search context found for id [35544152]",
"type": "search_context_missing_exception"
},
"failed_shards": [
{
"index": null,
"reason": {
"reason": "No search context found for id [35544152]",
"type": "search_context_missing_exception"
},
"shard": -1
}
],
"grouped": true,
"phase": "query",
"reason": "all shards failed",
"root_cause": [
{
"reason": "No search context found for id [35544152]",
"type": "search_context_missing_exception"
}
],
"type": "search_phase_execution_exception"
},
"status": 404
}

Related

mapper_parsing_exception while import dashboard to kibana

When I import a dashboard from kibana 7.5.1 to kibana 7.4.1, it failed with error "the file could not be processed". I call kibana import object api on kibana dev tool console instead, and it provide following response:
POST /api/saved_objects/_import
{
"file" : "C:\Users\dashboards-kibana\EKC-Dashboard-Prod.ndjson"
}
{
"error": {
"root_cause": [
{
"type": "mapper_parsing_exception",
"reason": "failed to parse"
}
],
"type": "mapper_parsing_exception",
"reason": "failed to parse",
"caused_by": {
"type": "json_parse_exception",
"reason": "Unrecognized character escape 'U' (code 85)\n at [Source: org.elasticsearch.common.bytes.BytesReference$MarkSupportingStreamInputWrapper#33da7471; line: 2, column: 17]"
}
},
"status": 400
}
This is my first time work with kibana. Is there anyway to solve the import error?

Elastic Search Azure Plugin Issue

The elastic search azure plugin troubleshooting issue:
I am trying to snapshot the index data from on prem to azure and am getting the same exception:
{
"error": {
"root_cause": [
{
"type": "repository_verification_exception",
"reason": "[qarepository] path is not accessible on master node"
}
],
"type": "repository_verification_exception",
"reason": "[qarepository] path is not accessible on master node",
"caused_by": {
"type": "i_o_exception",
"reason": "Can not write blob master.dat",
"caused_by": {
"type": "storage_exception",
"reason": "storage_exception: ",
"caused_by": {
"type": "i_o_exception",
"reason": "qaonpremesindex.blob.core.windows.net"
}
}
}
},
"status": 500
}
steps followed:
Created storage account in azure
Created a blob container
added the keystore values(name&key)
PUT _snapshot/qarepository
{
"type": "azure"
}

How to handle empty field names in ElasticSearch?

I'd like to log users' input to my RESTful API for debugging purpose but whenever there's an empty field in the JSON payload, an error is generated and the log is discarded.
For instance,
{
"extra": {
"request": {
"body": {
"": ""
}
}
}
}
...will result in
{
"error": {
"root_cause": [
{
"type": "mapper_parsing_exception",
"reason": "failed to parse"
}
],
"type": "mapper_parsing_exception",
"reason": "failed to parse",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "field name cannot be an empty string"
}
},
"status": 400
}
It seems to be caused by https://github.com/elastic/elasticsearch/blob/45e7e24736eeb4a157ac89bd16a374dbf917ae26/server/src/main/java/org/elasticsearch/index/mapper/DocumentParser.java#L191.
It's a bit tricky since it happens in the parsing phase... Is there any workaround to remove/rename such fields so that it can enable ES to digest these logs?

Restore of elasticsearch snapshot not working using cloud-aws plugin and s3 regions

I am trying to restore a snapshot from s3 using the elasticsearch cloud-aws plugin. Both elasticsearch and cloud-aws plugin are on version 2.2.0.
The weird thing is that on my local machine I can only restore the snapshot if I specify the region, like this:
{
"type": "s3",
"settings": {
"bucket": "bucketname",
"region": "us-west-1",
"access_key": "XXXX",
"secret_key": "XXXX",
"base_path": "path/to/snapshot",
"compress": "true"
}
}
If I leave out the region, the snapshot restore will fail with the following error (names have been changed of course):
{
"error": {
"root_cause": [
{
"type": "repository_verification_exception",
"reason": "[repositoryname] path [path][to][snapshot] is not accessible on master node"
}
],
"type": "repository_verification_exception",
"reason": "[repositoryname] path [path][to][snapshot] is not accessible on master node",
"caused_by": {
"type": "i_o_exception",
"reason": "Unable to upload object path/to/snapshot/tests-pJjA4cwNREu8RsFsXTn4Qg/master.dat-temp",
"caused_by": {
"type": "amazon_s3_exception",
"reason": "The request signature we calculated does not match the signature you provided. Check your key and signing method. (Service: Amazon S3; Status Code: 403; Error Code: SignatureDoesNotMatch; Request ID: 7D8675025D7DB3ED)"
}
}
},
"status": 500
}
However, on my server, the snapshot restore will only succeed if I don't specify the region, like this:
{
"type": "s3",
"settings": {
"bucket": "bucketname",
"access_key": "XXXX",
"secret_key": "XXXX",
"base_path": "path/to/snapshot",
"compress": "true"
}
}
If I do specify the region, no matter which region I pick, then the snapshot restore will fail with the same error as shown above.
Since I am automating the snapshot restore, I want the behaviour to be predictable across all servers and localhost. What am I doing wrong? Or missing?
Any help is greatly appreciated, thanks!
Found the cause myself: I did an update of my Java JRE/JDK, and also the JAVA_HOME environmental variable and the Elasticsearch windows service, but for some reason I still needed to do a restart of Windows to get the cloud-aws plugin working again.

partial fields in elasticsearch2.2.0 is not working?

May i know the details why the partial fields is not working in elasticsearch 2.2.0.I recently upgraded from elasticsearch 1.7.2 to elasticsearch 2.2.0.In older version it is working but after upgration results are not coming and raising an exception.
Pls find error for your reference
{
"error": {
"root_cause": [
{
"type": "search_parse_exception",
"reason": "failed to parse search source. unknown search element [partial_fields]",
"line": 79,
"col": 4
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "candidates1",
"node": "tlFrZ6JKTOWJ6krrkRnhMw",
"reason": {
"type": "search_parse_exception",
"reason": "failed to parse search source. unknown search element [partial_fields]",
"line": 79,
"col": 4
}
}
]
},
"status": 400
}
Partial fields have been removed in 2.0 and now you should use source filtering instead.
Simply replace partial_fields with _source and it should work.

Resources