Delete similarly named indexes from elasticsearch Head Plugin - elasticsearch

I want to execute a curl request from the elasticsearch head plugin in order to delete all the similarly named indexes. I am using the following command but getting an error.

The _search endpoint doesn't support the HTTP DELETE method.
Do this instead:
In the location field, set parkingapi-farhad-*
Select the DELETE method
Click the "Request" button
You can also do it using a simple curl:
curl -XDELETE http://localhost:9500/parkingapi-farhad-*

Related

Elasticsearch painless script update and get in a one POST call

I am using Elasticsearch 7.4, and have a unique requirement to perform below operation in elasticsearch through painless script:-
Update the field through painless script
Get the updated value in response
#1 I can perform using painless script using below to update the counter value, but how can I get the updated value in response? I want the new value ctx._source.counter in response of the POST call I made, Is there any way?
curl -XPOST -H "Content-Type:application/json" localhost:9200/myindex/_update_by_query -d "{"query":{"bool":{"filter":[{"match":{"field1":"1"}}]}},"script":{"source":"ctx._source.counter = ctx._source.counter + params.incrementValue","lang":"painless","params":{"incrementValue":"2"}}}"
What you want is different from the specs of the _update_by_query API. In the specs you can see the response only contains stats & status of the update, and not the document body (neither initial or final).
One way to accomplish your goal is:
Query document to update ie. where field1==1
Get initial counter value
Update
With this, you can get compute the updated value at your end with the method of your choice. In any case it would be two API calls not just one.

Delete all index with similary name

Hi everyone I have 100 index into my elasticsearch and I want to delete them with one query. They all begin with myindex:
myindex-1
myindex-2
myindex-3
myindex-4
.
.
.
myindex-100
when I try this query, it does not work:
curl -XDELETE http://localhost:9200/myindex*
I get:
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Wildcard expressions or all indices are not allowed"}],"type":"illegal_argument_exception","reason":"Wildcard expressions or all indices are not allowed"},"status":400}
Do you have any idea?
Elasticsearch documentation says:
The delete index API can also be applied to more than one index, by either using a comma separated list, or on all indices (be careful!) by using _all or *as index.
In order to disable allowing to delete indices via wildcards or _all, set action.destructive_requires_namesetting in the config to true. This setting can also be changed via the cluster update settings api.
So this could work if you have a predefined number of indices to delete:
curl -XDELETE http://localhost:9200/myindex-1,myindex-2,myindex-3,myindex-4
If you want to use wildcards you'll have to update the configuration as stated above
You could use The following in kibana dev tool:
PUT /_cluster/settings
{
"transient": {
"action.destructive_requires_name":false
}
}

How to delete documents from index with query using jest elasticsearch query

I am trying to delete documents from elastic search which have certain criteria to filter from the index using deleteQueryBuilder.
I am not sure about deleteQueryBuilder. However, if you are able to search your record (as you mentioned, some criteria), then replace your GET/PUT/POST etc to DELETE only which will delete your filtered records.
Try this for deleting entire index.i think there is no possibility of deleting documents
1.you can delete using id
$ curl -XDELETE 'http://localhost:9200/twitter/tweet/1'
2.or delete entire index
$ curl -XDELETE 'http://localhost:9200/twitter/'
In Jest I you want to use the:
DeleteByQuery.Builder(query)
method .. the Delete builder method is for id's only

Inserting an Element with a _parent field

I'm using ElasticSearch for an application in order to store and search for data.
Because it's also important to search for relationships in my particular case, I recently changed the structure of my data and I am using the _parent field now. (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-parent-field.html)
I already designed the search query, which works perfectly fine. However, I now have a problem when inserting a new child entry in my database.
It should work this way:
Without the _parent field, when I wanted to achieve this
$ curl -XPUT 'http://localhost:9200/data/child/1' -d '
I inserted the data this way using the JEST API:
client.execute(new Index.Builder(payload).index("data").type("child").build());
When I want to achieve this:
$ curl -XPOST localhost:9200/data/child?parent=154121-d'
How am I supposed to implement this using the JEST-API?
It's possible to provide a parameter for the request. The correct line of code to achieve this:
$ curl -XPOST localhost:9200/data/child?parent=154121-d'
would be achieved with this:
client.execute(new Index.Builder(payload).index("data").type("child").setParameter("parent", "154121").build());

ElasticSearch: How do I delete index entries from head?

I want to delete index entries directly from MOBZ's ElasticSearch head (web UI).
I tried a DELETE query in the "Any Request" section with the following:
{"query":{"term":{"supplier":"ABC"}}}
However, all I get in return is:
{
ok: true
acknowledged: true
}
and the entries do not get deleted.
What am I doing wrong?
You should have removed the "query" from your post data.
You only need it for _search, and you should be using the _query entrypoint for delete.
In that case it is obvious the post is only a query, thus making it redendant (and actually irrelevant) to explicitly state it's a query.
That is:
curl -XPOST 'localhost:9200/myindex/mydoc/_search' -d
'{"query":{"term":{"supplier":"ABC"}}}'
will work fine for search.
But to delete by query, if you try:
curl -XDELETE 'localhost:9200/myindex/mydoc/_query' -d
'{"query":{"term":{"supplier":"ABC"}}}'
it won't work (note the change in entry point to _query, as well as switch CURL parameter to delete).
You need to call:
curl -XDELETE 'localhost:9200/myindex/mydoc/_query' -d
'{"term":{"supplier":"ABC"}}'
Let me know if this helps.
If you want to do it in HEAD:
put /stock/one/_query in the any request text box next to the drop-box of "GET/PUT/POST/DELETE"
choose DELETE in the drop-down menu
the request body should be {"term":{"vendor":"Socks"}}
Your problem was that you used a request body of: {"query":{"term":{"vendor":"Socks"}}}
That is fine for search, but not for delete.
A simple way to delete from plugin head by doc Id:
Go to Any Request TAB in plugin head
Simply put http:/localhost:9200/myindex/indextype/id in the text box above DELETE drop-down
Select DELETE from drop-down
Execute the request by clicking in Request button
Here is the sample image:
I'd issue a search request first, to verify that the documents you want deleted are actually being returned by your query.
It's impossible to give clear help, since there are many things that could be going wrong, but here are some possible probelems:
You don't have the correct index/type specified in the ES Head query
You need to specify the index and type on the second input box, not the first. The first line is meant for the host address and automatically adds a trailing slash
You need to use the Delete command from the dropdown
The analyzer of your fields is altering the field text in a way that it isn't being found by the Term query.
In all likelihood, it is the last option. If you haven't specified an analyzer, the default one that ES picks is the Standard analyzer, which includes a lowercase filter. The term "ABC" is therefore never indexed, instead "abc" is indexed.
Term query is not analyzed at all, so case sensitivity is important.
If those tips don't help, post up your mapping and some sample data, and we can probably help better.

Resources