elastic Elasticsearch - Java Engineer - Scripting Infrastructure

Posted on April 23rd, 2019

At Elastic, we have a simple goal: to solve the world's data problems with products that delight and inspire. As the company behind the popular open source projects — Elasticsearch, Kibana, Logstash, and Beats — we help people around the world do great things with their data. From stock quotes to Twitter streams, Apache logs to WordPress blogs, our products are extending what's possible with data, delivering on the promise that good things come from connecting the dots. We unite Elasticians across 30+ countries (and counting!), 18 timezones and 30 different languages into one coherent team, while the broader community spans across over 100 countries.

Elasticsearch includes a powerful, flexible family of scripting features that enable users to programmatically modify documents, inject fields into search responses, store search templates, express custom scoring and ranking functions, and more. We're looking for a Java engineer to join our team to develop and maintain this key functionality. In this role, you will help us develop our custom scripting language, maintain the script engine plugin infrastructure, and support the Lucene expressions language. This is a great opportunity to build features that contribute heavily to the overall flexibility and usability of Elasticsearch.

Engineering Philosophy

Engineering a highly complex distributed system that is easy to operate via elegantly designed APIs is a non-trivial effort. It requires solid software development skills, and more importantly, a sharp mind and the ability to think like a user. We also care deeply about giving you full ownership of what you’re working on. Our company fundamentally believes great minds achieve greatness when they are set free and are surrounded and challenged by their peers, which is clearly visible in our organization. At Elastic, we effectively don’t have a hierarchy to speak of. We feel that anyone needs to be in the position to comment on absolutely anything, regardless of their role within the company.

What You Will Be Doing:

  • Developing Painless, Elasticsearch’s custom scripting language
  • Improving existing scripting infrastructure within Elasticsearch, including support for Lucene expressions, Mustache templating, and custom scripting plugins
  • Improving the usability and performance of Painless, including the server-side work required to build an IDE for the language
  • Improving Painless’s documentation
  • Collaborating in open source with the Elasticsearch team and Elastic Stack users

What You Will Bring Along:

  • Strong understanding of Java in general, including the standard library of data structures
  • Solid understanding of JVM internals including JIT compilation, object allocation / garbage collection, and the Java memory model
  • Firm understanding of compilers and interpreters

Bonus Points:

  • Knowledge of parser generators such as ANTLR
  • Familiarity with Java ASM or bytecode manipulation in general
  • Experience with and interest in technical writing

#LI-CD1

Example Work:

We believe in working in the open. As an engineer on the Elasticsearch team, you will collaborate publicly on GitHub with your fellow engineers and our users. Here are a few examples of the kind of work you may undertake:

Additional Information

We're looking to hire team members invested in realizing the goal of making real-time data exploration easy and available to anyone. As a distributed company, we believe that diversity drives our vibe! Whether you're looking to launch a new career or grow an existing one, Elastic is the type of company where you can balance great work with great life.

  • Competitive pay based on the work you do here and not your previous salary
  • Equity
  • Global minimum of 16 weeks of parental leave (moms & dads)
  • Generous vacation time and one week of volunteer time off
  • The flexibility to work 100% remote from your home

 

Apply for this Position