# Stored Procedures

**URL:** <https://discuss.elastic.co/t/stored-procedures/115050>\
**Category:** Elasticsearch\
**Created:** [January 11, 2018, 9:46am UTC](https://discuss.elastic.co/t/stored-procedures/115050 "2018-01-11T09:46:24Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![devil\_srj7](https://avatars.discourse-cdn.com/v4/letter/d/8edcca/32.png) [@devil\_srj7](https://discuss.elastic.co/u/devil_srj7)\
**Post date:** [January 11, 2018, 9:46am UTC](https://discuss.elastic.co/t/stored-procedures/115050/1 "2018-01-11T09:46:24Z")

</div>

> Can we have stored procedures in Elasticsearch as we have in MySql??  
> So that we can call the procedure from Java application just by its name.

---

<div class="post-metadata">

**Author:** ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)\
**Post date:** [January 11, 2018, 9:52am UTC](https://discuss.elastic.co/t/stored-procedures/115050/2 "2018-01-11T09:52:54Z")

</div>

What exactly do you expect these to do?

---

<div class="post-metadata">

**Author:** ![devil\_srj7](https://avatars.discourse-cdn.com/v4/letter/d/8edcca/32.png) [@devil\_srj7](https://discuss.elastic.co/u/devil_srj7)\
**Post date:** [January 11, 2018, 9:54am UTC](https://discuss.elastic.co/t/stored-procedures/115050/3 "2018-01-11T09:54:20Z")

</div>

> [@warkolm](#):
>
> What exactly do you expect these to do?

`

_to perform functions as required_

`

---

<div class="post-metadata">

**Author:** ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)\
**Post date:** [January 11, 2018, 9:55am UTC](https://discuss.elastic.co/t/stored-procedures/115050/4 "2018-01-11T09:55:04Z")

</div>

_What functions_? Please, be specific with what you want, because Elasticsearch is not MySQL.

---

<div class="post-metadata">

**Author:** ![devil\_srj7](https://avatars.discourse-cdn.com/v4/letter/d/8edcca/32.png) [@devil\_srj7](https://discuss.elastic.co/u/devil_srj7)\
**Post date:** [January 11, 2018, 10:06am UTC](https://discuss.elastic.co/t/stored-procedures/115050/5 "2018-01-11T10:06:46Z")

</div>

An Example of the stored procedure would be as follows :

```
  DELIMITER //
    CREATE PROCEDURE country_hos RETURNS char(1)
    (IN con CHAR(20))

    BEGIN

      SELECT Name, HeadOfState FROM Country
      WHERE Continent = con;

      IF .........
             .........
    ELSE IF ..........
        ..........................
    END IF

    END //
    DELIMITER ;
```

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [January 11, 2018, 10:55am UTC](https://discuss.elastic.co/t/stored-procedures/115050/6 "2018-01-11T10:55:09Z")

</div>

You can probably store a script using painless and do scripted fields BUT this will be super slow. It's always better to do that at index time.  
Which you can do if you wish with elasticsearch ingest script processor.

---

<div class="post-metadata">

**Author:** ![devil\_srj7](https://avatars.discourse-cdn.com/v4/letter/d/8edcca/32.png) [@devil\_srj7](https://discuss.elastic.co/u/devil_srj7)\
**Post date:** [January 11, 2018, 11:53am UTC](https://discuss.elastic.co/t/stored-procedures/115050/7 "2018-01-11T11:53:10Z")

</div>

> [@dadoonet](#):
>
> You can probably store a script using painless and do scripted fields BUT this will be super slow. It's always better to do that at index time.
> 
> Which you can do if you wish with elasticsearch ingest script processor.

```
Would using these script processor affect the performance of Elasticsearch?

```

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [January 11, 2018, 3:06pm UTC](https://discuss.elastic.co/t/stored-procedures/115050/8 "2018-01-11T15:06:44Z")

</div>

Indexing performance? Yes.  
Search performance? No.

---

<div class="post-metadata">

**Author:** ![devil\_srj7](https://avatars.discourse-cdn.com/v4/letter/d/8edcca/32.png) [@devil\_srj7](https://discuss.elastic.co/u/devil_srj7)\
**Post date:** [January 11, 2018, 6:28pm UTC](https://discuss.elastic.co/t/stored-procedures/115050/9 "2018-01-11T18:28:07Z")

</div>

can we apply different functions for example aggregations ?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [January 11, 2018, 7:08pm UTC](https://discuss.elastic.co/t/stored-procedures/115050/10 "2018-01-11T19:08:41Z")

</div>

It's unclear to me what is the goal of this. Can you explain the use case please?

What are the documents you have?  
What is the output you need?

---

<div class="post-metadata">

**Author:** ![devil\_srj7](https://avatars.discourse-cdn.com/v4/letter/d/8edcca/32.png) [@devil\_srj7](https://discuss.elastic.co/u/devil_srj7)\
**Post date:** [January 12, 2018, 10:04am UTC](https://discuss.elastic.co/t/stored-procedures/115050/11 "2018-01-12T10:04:51Z")

</div>

> I have MySQL database of 11 tables. I have created stored procedure in MySQL to perform operations on the required data so that while querying i use only the proc name.
> 
> Now, I want to tranfer the database to elasticsearch but still want the stored procedure in MySQL that can some how be used in elasticsearch in some manner.
> 
> So these stored procedure contains some mathematical functions. I need a way to use them in elasticsearch without affecting the perfromance.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [January 12, 2018, 10:36am UTC](https://discuss.elastic.co/t/stored-procedures/115050/12 "2018-01-12T10:36:10Z")

</div>

This is a technical stuff. It's not a end user requirement.

What is the end user need?

---

<div class="post-metadata">

**Author:** ![devil\_srj7](https://avatars.discourse-cdn.com/v4/letter/d/8edcca/32.png) [@devil\_srj7](https://discuss.elastic.co/u/devil_srj7)\
**Post date:** [January 12, 2018, 11:41am UTC](https://discuss.elastic.co/t/stored-procedures/115050/13 "2018-01-12T11:41:36Z")

</div>

User user need is the visual representation in terms of graphs which is been done through Java.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [January 12, 2018, 12:28pm UTC](https://discuss.elastic.co/t/stored-procedures/115050/14 "2018-01-12T12:28:24Z")

</div>

I'm afraid I can't help.

May be provide an example?

---

<div class="post-metadata">

**Author:** ![devil\_srj7](https://avatars.discourse-cdn.com/v4/letter/d/8edcca/32.png) [@devil\_srj7](https://discuss.elastic.co/u/devil_srj7)\
**Post date:** [January 17, 2018, 9:26am UTC](https://discuss.elastic.co/t/stored-procedures/115050/15 "2018-01-17T09:26:14Z")

</div>

I just need to know a way to use predefined functions in elastic search.  
A simple addition function could also be helpful so I can relate it to find my solution.

---

<div class="post-metadata">

**Author:** ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)\
**Post date:** [January 17, 2018, 7:30pm UTC](https://discuss.elastic.co/t/stored-procedures/115050/16 "2018-01-17T19:30:09Z")

</div>

Have you looked at aggregations?

---

<div class="post-metadata">

**Author:** ![devil\_srj7](https://avatars.discourse-cdn.com/v4/letter/d/8edcca/32.png) [@devil\_srj7](https://discuss.elastic.co/u/devil_srj7)\
**Post date:** [January 18, 2018, 1:46pm UTC](https://discuss.elastic.co/t/stored-procedures/115050/17 "2018-01-18T13:46:08Z")

</div>

> [@warkolm](#):
>
> Have you looked at aggregations?

Yes I have.  
But I also need to have multiple functions with "_IF,WHEN,CASE_".  
So would I be able to use these clauses with aggregations??

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [February 15, 2018, 1:46pm UTC](https://discuss.elastic.co/t/stored-procedures/115050/18 "2018-02-15T13:46:39Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
