Our powerful ElasticSearch database and search engine

Our ElasticSearch database and search engine is an incredibly advanced and powerful feature, which delivers results of unlimited combinations of filters and search conditions, incredibly fast.

In this article we explain the overall data structure, and then provide some examples later on, hoping that understanding the underlying structure will help make sense of the results, and also help you see the endless possibilities. Maybe even come up with your own combinations of conditions to find exactly what you are looking for.

Screenshot 2020 06 19 at 12 25 32

The Data Structure

The ElasticSearch database is a large table. You can think of each wellbore as represented in a spreadsheet, where each row holds information about one particular depth (there is one row for each meter MD of the well), and each column holds information about one particular property (md, tvd, inclination, dogleg, section type etc)
This means that by looking at row 543 of the spreadsheet, you can find the md, tvd, inclination, dogleg, section type and any other information for that depth. When data is missing, the corresponding cells in the table are populated by None.

We have also added a few additional properties, which are not related to a specific depth, but rather the entire wellbore, or entire sections or parts of the wellbore.

Examples of such properties are:

  • Section TD (MD):
    • Holds TD of the current section. For example a 22” section which runs from MD 500 to MD 1000 will have a value of 1000 for every row of this column. This allows users to investigate particular 22” sections, determined by their TD.
  • Section Length:
    • Holds information about the length of the current section. This allows user to distinguish between sections by their length.
  • … Quality:
    • Every wellbore has a set of “Quality” properties, which are either 0 or 1. 1 if the wellbore has that dataset. These are, currently:
      • NPT
      • Formations and Groups
      • Well Path
      • Sections (1 if casing design is available, should be renamed to Casing Quality soon)
      • Rushmore
      • Drilling Muds
      • Drill Stem Tests
      • Composite Logs
      • Pressure Tests
      • Pressure Curves
    • Including for example “Well Path Quality = 1” in your filter, will make sure that only wellbores where well path data is available, will turn white in the map.

The Filter

The first place you will encounter ElasticSearch in our software, is in the explorer, where you make filters and some wellbores (represented by dots) turn white, while others turn grey.
Let’s look at this feature in detail:

Screenshot 2020 06 19 at 12 08 48

In the top left dropdown of this window, you will find all the different properties you can search for. If a wellbore contains the data you search for and the conditions are met, it will turn white in the map. If you search for

  • Inclination > 5

You will get a white dot for every wellbore that has at least one row in the table which holds a value > 5 for Inclination. That means, ElasticSearch returns all wellbores where the statement “Inclination > 5” is True at least once. You can also make your search more complicated and precise, by adding more conditions to the same filter: Let’s say you search for

  • Inclination > 5
  • Casing Size = 22”

You will probably get less white dots than before, because some of the wells that had Inclination > 5 did not have Inclination > 5 at a depth where the current Casing Size was 22”.

It is important to understand that our search engine looks for rows in the spreadsheet where all the conditions are met at the same time.

For the filter you made above, consider the following cases:

  • A perfectly vertical well with a 22” casing will show up as grey in the map. Because only one of the conditions were met for this well. Inclination was < 5 everywhere.
  • A well with a perfectly vertical 22” section, which builds to an inclination of 10 further down, will show up as grey in the map, because the two conditions are never met at the same time. At no point in this well, is the casing size is 22, AND the inclination is > 5.

Our filters accepts a variation of operators, such as >, = and < to specify exact values or ranges. You can use CONTAINS if only want to type parts of a well name or field for example, and you can use IS ONE OF if you want the filter to return hits on either one of a set of values for one property.

The Data

Historical wells are real wells, and not straight lines in a plan. Historical data comes from measurements, and all real measurements will have the potential of spiky data and some uncertainty.

Screenshot 2020 06 19 at 12 19 00

Take a moment to consider this well. Plotted here is TVD vs Inclination (left) and TVD vs azimuth (right). This well is, by all practical measures, vertical. But if you search for wells with Inclination > 2, this well will show up as white.

And, if you make the following filter...:

  • Inclination = 0
  • TVD >= 1500
  • TVD <= 3500

(To look for wellbores that are vertical in between 1500 and 3500 m TVD) This well would be grey. Because the data shows this wellbore has inclination > 0 in every row between TVD 1500 and 3500

In order to avoid filtering out too many wellbores, it is generally a good idea to allow some flexibility in your filters, and avoid the most rigid terms.

For example:

  • Rather than Inclination = 0, maybe search for Inclination < 3
  • Rather than Dogleg = 3, maybe search for Dogleg < 3.5 and Dogleg > 2.5

Unfortunately, not all wellbores have all the data types populated. One wellbore might be missing bit sizes, an other wellbore could be missing casing sizes (Section Quality = 0), and we might be missing trajectory for a third (Wellpath Quality = 0).

Where data is missing, the corresponding cell in the table will be populated with “None”. For example, if a wellbore is missing trajectory, the entire inclination, azimuth, dogleg, and other trajectory related columns will be populated by None, and this wellbore will show up as grey for ANY filter containing ANY of these properties as a condition. It doesn’t matter if you search for inclination > 5 or < 5. This wellbore will always be grey in the map, because the data is not there, and it is never True that this well has inclination of > or < 5.

(We will be incorporating a differentiation between FALSE and MISSING in the future - currently trying to find the best way of displaying such information.)


After you have made a selection in the map, it is time to move on to the right panel, where all the statistics live. Here you see histograms and bar plots representing all the wells in your selection.

Screenshot 2020 06 19 at 12 20 52

This bar plot, for example, shows all the different bitsizes used in the wells in your selection, and how many meters (or ft if you’re an Imperial user) was drilled with each bitsize. If you hover over a bar, you get detailed information about the content of that bar. Here, we see that there are 46 wells from your selection that contain a 26” bit, and the total distance drilled with that bitsize is 23706 m.

Clicking that bar creates a new selection containing those 46 wellbores.

The bottom blue bar allows you to zoom into any area of the plot, and the bars will scale automatically. Very useful if you want to get a more detailed view of relatively small bars.

Screenshot 2020 06 19 at 12 21 30

The Histograms (ROP, Dogleg, Inclination and MudWeight) have the same functionality, but clicking these bars will create a selection with the 10 most contributing wells, even though there may be more wells contributing to the bar. Since many wells will contribute with just very few data points, and are not really relevant.

Screenshot 2020 06 19 at 12 22 10

Depth Segmentation

Filtering in the map returns all WELLBORES that match all conditions at at least one point in the well.

The Depth Segmentation in the Statistics view operates differently, and allows you to investigate certain depth ranges of your selection of wells. The most obvious and simple example here is to look at a certain MD range. Applying this depth segmentation returns statistics for every data point from 1000-2000 MD (ft or meter depending on your settings) in all your wells, and will answer questions like “what are the most common formations to encounter at this depth?”, or “which mudweights are used at this depth?”

Screenshot 2020 06 19 at 12 23 13

You could also use more advanced segmentations, like Casing Size = 22” . Here you will get all data points for all the 22” sections in you selection of wells. Regardless of the depths they are set at. This segmentation will answer questions like “Which bitsizes are used for the 22” section”, “What is the maximum dogleg for the 22” casings?”

Screenshot 2020 06 19 at 12 23 47

You are also free to make your own advanced combinations of depth segmentation to answer uniques and advanced questions.

We would love to hear of your most interesting discoveries!

Share this

Latest news