0% found this document useful (0 votes)
9 views

Mastering Elasticsearch 5 x Master the intricacies of Elasticsearch 5 and use it to create flexible and scalable search solutions Third Edition Dixit - Quickly download the ebook to never miss important content

The document provides an overview of various ebooks available for download at textbookfull.com, focusing on topics such as Elasticsearch, Unity, Azure, and JavaScript design patterns. It highlights specific titles, including 'Mastering Elasticsearch 5.x' and 'ElasticSearch Cookbook', along with their respective links for instant access. Additionally, it outlines the contents of 'Mastering Elasticsearch 5.x', detailing its chapters and key concepts related to Elasticsearch functionalities and administration.

Uploaded by

amidioceana
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views

Mastering Elasticsearch 5 x Master the intricacies of Elasticsearch 5 and use it to create flexible and scalable search solutions Third Edition Dixit - Quickly download the ebook to never miss important content

The document provides an overview of various ebooks available for download at textbookfull.com, focusing on topics such as Elasticsearch, Unity, Azure, and JavaScript design patterns. It highlights specific titles, including 'Mastering Elasticsearch 5.x' and 'ElasticSearch Cookbook', along with their respective links for instant access. Additionally, it outlines the contents of 'Mastering Elasticsearch 5.x', detailing its chapters and key concepts related to Elasticsearch functionalities and administration.

Uploaded by

amidioceana
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 64

Explore the full ebook collection and download it now at textbookfull.

com

Mastering Elasticsearch 5 x Master the intricacies


of Elasticsearch 5 and use it to create flexible
and scalable search solutions Third Edition Dixit

https://textbookfull.com/product/mastering-
elasticsearch-5-x-master-the-intricacies-of-
elasticsearch-5-and-use-it-to-create-flexible-and-scalable-
search-solutions-third-edition-dixit/

OR CLICK HERE

DOWLOAD EBOOK

Browse and Get More Ebook Downloads Instantly at https://textbookfull.com


Click here to visit textbookfull.com and download textbook now
Your digital treasures (PDF, ePub, MOBI) await
Download instantly and pick your perfect format...

Read anywhere, anytime, on any device!

Relevant Search With applications for Solr and


Elasticsearch 1st Edition Doug Turnbull

https://textbookfull.com/product/relevant-search-with-applications-
for-solr-and-elasticsearch-1st-edition-doug-turnbull/

textbookfull.com

ElasticSearch Cookbook, Second Edition Alberto Paro

https://textbookfull.com/product/elasticsearch-cookbook-second-
edition-alberto-paro/

textbookfull.com

Unity 5 x Shaders and Effects Cookbook Master the art of


Shader programming to bring life to your Unity projects 1
[2] Edition Alan Zucconi
https://textbookfull.com/product/unity-5-x-shaders-and-effects-
cookbook-master-the-art-of-shader-programming-to-bring-life-to-your-
unity-projects-1-2-edition-alan-zucconi/
textbookfull.com

How to Prove It Solutions Manual Third Edition Daniel


Velleman

https://textbookfull.com/product/how-to-prove-it-solutions-manual-
third-edition-daniel-velleman/

textbookfull.com
Master of Control (Gods of Vegas #5) 1st Edition Sienna
Snow

https://textbookfull.com/product/master-of-control-gods-of-
vegas-5-1st-edition-sienna-snow/

textbookfull.com

Mastering Qt 5 Create stunning cross platform applications


using C with Qt Widgets and QML with Qt Quick 2nd Edition
Guillaume Lazar
https://textbookfull.com/product/mastering-qt-5-create-stunning-cross-
platform-applications-using-c-with-qt-widgets-and-qml-with-qt-
quick-2nd-edition-guillaume-lazar/
textbookfull.com

Mastering Azure Serverless Computing Design and Implement


End to End Highly Scalable Azure Serverless Solutions with
Ease 1st Edition Abhishek Mishra
https://textbookfull.com/product/mastering-azure-serverless-computing-
design-and-implement-end-to-end-highly-scalable-azure-serverless-
solutions-with-ease-1st-edition-abhishek-mishra/
textbookfull.com

The Presentation Book: How To Create It, Shape It And


Deliver It 2nd Edition Emma Ledden

https://textbookfull.com/product/the-presentation-book-how-to-create-
it-shape-it-and-deliver-it-2nd-edition-emma-ledden/

textbookfull.com

MASTERING JAVASCRIPT DESIGN PATTERNS create scalable and


reliable applications with advanced Javascript design
patterns using reliable code 3rd Edition Tomas Corral
Cosas
https://textbookfull.com/product/mastering-javascript-design-patterns-
create-scalable-and-reliable-applications-with-advanced-javascript-
design-patterns-using-reliable-code-3rd-edition-tomas-corral-cosas/
textbookfull.com
Table of Contents
Mastering Elasticsearch 5.x - Third Edition
Credits
About the Author
Acknowledgements
About the Reviewer
www.PacktPub.com
Why subscribe?
Customer Feedback
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
1. Revisiting Elasticsearch and the Changes
An overview of Lucene
Getting deeper into the Lucene index
Inverted index
Segments
Norms
Term vectors
Posting formats
Doc values
Document analysis
Basics of the Lucene query language
Querying fields
Term modifiers
Handling special characters
An overview of Elasticsearch
The key concepts
Working of Elasticsearch
Introducing Elasticsearch 5.x
Introducing new features in Elasticsearch
New features in Elasticsearch 5.x
New features in Elasticsearch 2.x
The changes in Elasticsearch
Changes between 1.x to 2.x
Mapping changes
Query and filter changes
Security, reliability, and networking changes
Monitoring parameter changes
Changes between 2.x to 5.x
Mapping changes
No more string fields
Floats are default
Changes in numeric fields
Changes in geo_point fields
Some more changes
Summary
2. The Improved Query DSL
The changed default text scoring in Lucene - BM25
Precision versus recall
Recalling TF-IDF
Introducing BM25 scoring
BM25 scoring formula
Example - tuning BM25 with custom similarity
How BM25 differs from TF-IDF
Saturation point
Average document length
Re-factored Query DSL
Choosing the right query for the job
Query categorization
Basic queries
Compound queries
Understanding bool queries
Non-analyzed queries
Full text search queries
Pattern queries
Similarity supporting queries
Score altering queries
Position aware queries
Structure aware queries
The use cases
Example data
Basic queries use cases
Searching for values in range
Compound queries use cases
A Boolean query for multiple terms
Boosting some of the matched documents
Ignoring lower scoring partial queries
Not analyzed queries use cases
Limiting results to given tags
Full text search queries use cases
Using Lucene query syntax in queries
Handling user queries without errors
Pattern queries use cases
Autocomplete using prefixes
Pattern matching
Similarity supporting queries use cases
Finding terms similar to a given one
Score altering query use cases
Decreasing importance of books with a certain value
Pattern query use cases
Matching phrases
Spans, spans everywhere
Some more important changes in Query DSL
Query rewrite explained
Prefix query as an example
Getting back to Apache Lucene
Query rewrite properties
An example
Query templates
Introducing search templates
The Mustache template engine
Conditional expressions
Loops
Default values
Storing templates in files
Storing templates in a cluster
Summary
3. Beyond Full Text Search
Controlling multimatching
Multimatch types
Best fields matching
Cross fields matching
Most fields matching
Phrase matching
Phrase with prefixes matching
Controlling scores using the function score query
Built-in functions under the function score query
The weight function
The field value factor function
The script score function
Decay functions - linear, exp, and gauss
Query rescoring
What is query rescoring?
Structure of the rescore query
Rescore parameters
To sum up
Elasticsearch scripting
The syntax
Scripting changes across different versions
Painless - the new default scripting language
Using Painless as your scripting language
Variable definition in scripts
Conditionals
Loops
An example
Sorting results based on scripts
Sorting based on multiple fields
Lucene expressions
The basics
An example
Summary
4. Data Modeling and Analytics
Data modeling techniques in Elasticsearch
Managing relational data in Elasticsearch
The object type
The nested documents
Parent - child relationship
Parent-child relationship in the cluster
Finding child documents with a parent ID query
A few words about alternatives
An example of data denormalization
Data analytics using aggregations
Instant aggregations in Elasticsearch 5.0
Revisiting aggregations
Metric aggregations
Bucket aggregations
Pipeline aggregations
Calculating average monthly sales using avg_bucket
aggregation
Calculating the derivative for the sum of the monthly sale
The new aggregation category - Matrix aggregation
Understanding matrix stats
Dealing with missing values
Summary
5. Improving the User Search Experience
Correcting user spelling mistakes
Testing data
Getting into technical details
Suggesters
Using a suggester under the _search endpoint
Understanding the suggester response
Multiple suggestion types for the same suggestion text
The term suggester
Configuring the Elasticsearch term suggester
Common term suggester options
Additional term suggester options
The phrase suggester
Usage example
Configuring the phrase suggester
Basic configuration
Configuring smoothing models
Configuring candidate generators
The completion suggester
The logic behind the completion suggester
Using the completion suggester
Indexing data
Querying data
Custom weights
Using fuzziness with the completion suggester
Implementing your own auto-completion
Creating an index
Understanding the parameters
Configuring settings
Configuring mappings
Indexing documents
Querying documents for auto-completion
Working with synonyms
Preparing settings for synonym search
Formatting synonyms
Synonym expansion versus contraction
Summary
6. The Index Distribution Architecture
Configuring an example multi-node cluster
Choosing the right amount of shards and replicas
Sharding and overallocation
A positive example of overallocation
Multiple shards versus multiple indices
Replicas
Routing explained
Shards and data
Let's test routing
Indexing with routing
Routing in practice
Querying
Aliases
Multiple routing values
Shard allocation control
Allocation awareness
Forcing allocation awareness
Shard allocation filtering
What include, exclude, and require mean
Runtime allocation updating
Index level updates
Cluster level updates
Defining total shards allowed per node
Defining total shards allowed per physical server
Inclusion
Requirement
Exclusion
Disk-based allocation
Query execution preference
Introducing the preference parameter
An example of using query execution preference
Stripping data on multiple paths
Index versus type - a revised approach for creating indices
Summary
7. Low-Level Index Control
Altering Apache Lucene scoring
Available similarity models
Setting a per-field similarity
Similarity model configuration
Choosing the default similarity model
Configuring the chosen similarity model
Configuring the TF-IDF similarity
Configuring the BM25 similarity
Configuring the DFR similarity
Configuring the IB similarity
Configuring the LM Dirichlet similarity
Configuring the LM Jelinek Mercer similarity
Choosing the right directory implementation - the store module
The store type
The simple file system store - simplefs
The new I/O filesystem store - niofs
The mmap filesystem store - mmapfs
The default store type - fs
NRT, flush, refresh, and transaction log
Updating the index and committing changes
Changing the default refresh time
The transaction log
The transaction log configuration
Handling corrupted translogs
Near real-time GET
Segment merging under control
Merge policy changes in Elasticsearch
Configuring the tiered merge policy
Merge scheduling
The concurrent merge scheduler
Force merging
Understanding Elasticsearch caching
Node query cache
Configuring node query cache
Shard request cache
Enabling and disabling the shard request cache
Request cache settings
Cache invalidation
The field data cache
Field data or doc values
Using circuit breakers
The parent circuit breaker
The field data circuit breaker
The request circuit breaker
In flight requests circuit breaker
Script compilation circuit breaker
Summary
8. Elasticsearch Administration
Node types in Elasticsearch
Data node
Master node
Ingest node
Tribe node
Coordinating nodes/Client nodes
Discovery and recovery modules
Discovery configuration
Zen discovery
The unicast Zen discovery configuration
The master election configuration
Zen discovery fault detection and configuration
No Master Block
The Amazon EC2 discovery
The EC2 plugin installation
The EC2 plugin's generic configuration
Optional EC2 discovery configuration options
The EC2 nodes scanning configuration
Other discovery implementations
The gateway and recovery configuration
The gateway recovery process
Configuration properties
The local gateway
Low-level recovery configuration
Cluster-level recovery configuration
The indices recovery API
The human-friendly status API - using the cat API
The basics of cat API
Using the cat API
Cat API common arguments
The examples of cat API
Getting information about the master node
Getting information about the nodes
Changes in cat API - Elasticsearch 5.0
Host field removed from the cat nodes API
Changes to cat recovery API
Changes to cat nodes API
Changes to cat field data API
Backing up
The snapshot API
Saving backups on a filesystem
Creating snapshot
Registering repository path
Registering shared file system repository in Elasticsearch
Creating snapshots
Getting snapshot information
Deleting snapshots
Saving backups in the cloud
The S3 repository
The HDFS repository
The Azure repository
The Google cloud storage repository
Restoring snapshots
Example - restoring a snapshot
Restoring multiple indices
Renaming indices
Partial restore
Changing index settings during restore
Restoring to different cluster
Summary
9. Data Transformation and Federated Search
Preprocessing data within Elasticsearch with ingest nodes
Working with ingest pipeline
The ingest APIs
Creating a pipeline
Getting pipeline details
Deleting a pipeline
Simulating pipelines for debugging purposes
Handling errors in pipelines
Tagging errors within the same document and index
Indexing error prone documents in a different index
Ignoring errors altogether
Working with ingest processors
Append processor
Convert processor
Grok processor
Federated search
The test clusters
Creating the tribe node
Reading data with the tribe node
Master-level read operations
Writing data with the tribe node
Master-level write operations
Handling indices conflicts
Blocking write operations
Summary
10. Improving Performance
Query validation and profiling
Validating expensive queries before execution
Query profiling for detailed query execution reports
Understanding the profile API response
Consideration for profiling usage
Very hot threads
Usage clarification for the hot threads API
The hot threads API response
Scaling Elasticsearch
Vertical scaling
Horizontal scaling
Automatically creating replicas
Redundancy and high availability
Cost and performance flexibility
Continuous upgrades
Multiple Elasticsearch instances on a single physical machine
Preventing the shard and its replicas from being on the
same node
Designated nodes' roles for larger clusters
Query aggregator nodes
Data nodes
Master eligible nodes
Using Elasticsearch for high load scenarios
General Elasticsearch-tuning advice
The index refresh rate
Thread pools tuning
Data distribution
Advice for high query rate scenarios
Node query cache and shard query cache
Think about the queries
Using routing
Parallelize your queries
Keeping size and shard_size under control
High indexing throughput scenarios and Elasticsearch
Bulk indexing
Keeping your document fields under control
The index architecture and replication
Tuning the write-ahead log
Thinking about storage
RAM buffer for indexing
Managing time-based indices efficiently using shrink and rollover
APIs
The shrink API
Requirements for indices to be shrunk
Shrinking an index
Rollover API
Using the rollover API
Passing additional settings with a rollover request
Pattern for creating new index name
Summary
11. Developing Elasticsearch Plugins
Creating the Apache Maven project structure
Understanding the basics
The structure of the Maven Java project
The idea of POM
Running the build process
Introducing the assembly Maven plugin
Understanding the plugin descriptor file
Creating a custom REST action
The assumptions
Implementation details
Using the REST action class
The constructor
Handling requests
Writing responses
The plugin class
Informing Elasticsearch about our REST action
Time for testing
Building the REST action plugin
Installing the REST action plugin
Checking whether the REST action plugin works
Creating the custom analysis plugin
Implementation details
Implementing TokenFilter
Implementing the TokenFilter factory
Implementing the class custom analyzer
Implementing the analyzer provider
Implementing the analyzer plugin
Informing Elasticsearch about our custom analyzer
Testing our custom analysis plugin
Building our custom analysis plugin
Installing the custom analysis plugin
Checking whether our analysis plugin works
Summary
12. Introducing Elastic Stack 5.0
Overview of Elastic Stack 5.0
Introducing Logstash, Beats, and Kibana
Working with Logstash
Logstash architecture
Installing Logstash
Installing Logstash from binaries
Installing Logstash from APT repositories
Installing Logstash from YUM repositories
Configuring Logstash
Example - shipping system logs using Logstash
Starting Logstash
Introducing Beats as data shippers
Working with Metricbeat
Installing Metricbeat
Configuring Metricbeat
Running Metricbeat
Loading a sample Kibana dashboard into Elasticsearch
Working with Kibana
Installing Kibana
Kibana configuration
Starting Kibana
Exploring and visualizing data on Kibana
Understanding the Kibana Management screen
Discovering data on Kibana
Using the Dashboard screen to create/load dashboards
Using Sense
Summary
Mastering Elasticsearch 5.x -
Third Edition
Mastering Elasticsearch 5.x -
Third Edition
Copyright © 2017 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored
in a retrieval system, or transmitted in any form or by any means,
without the prior written permission of the publisher, except in the
case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure
the accuracy of the information presented. However, the information
contained in this book is sold without warranty, either express or
implied. Neither the author, nor Packt Publishing, and its dealers and
distributors will be held liable for any damages caused or alleged to
be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information
about all of the companies and products mentioned in this book by
the appropriate use of capitals. However, Packt Publishing cannot
guarantee the accuracy of this information.
First published: October 2013
Second edition: February 2015
Third edition: February 2017
Production reference: 1160217
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham
B3 2PB, UK.
ISBN 978-1-78646-018-9
www.packtpub.com
Credits
Author Copy Editor
Bharvi Dixit Safis Editing
Reviewer Project Coordinator
Marcelo Ochoa Nidhi Joshi
Commissioning Editor Proofreader
Amey Varangaonkar Safis Editing
Acquisition Editor Indexer
Divya Poojari Tejal Daruwale Soni
Content Development Editor Graphics
Cheryl Dsa Tania Dutta
Technical Editor Production Coordinator
Prasad Ramesh Nilesh Mohite
About the Author
Bharvi Dixit is an IT professional with extensive experience of
working on search servers, NoSQL databases, and cloud services. He
holds a master's degree in computer science and is currently
working with Sentieo, a USA-based financial data and equity
research platform, where he leads the overall platform and
architecture of the company spanning across hundreds of servers. At
Sentieo, he also plays a key role in the search and data team.
He is also the organizer of Delhi's Elasticsearch Meetup Group,
where he speaks about Elasticsearch and Lucene and is continuously
building the community around these technologies.
Bharvi also works as a freelance Elasticsearch consultant and has
helped more than half a dozen organizations adapt Elasticsearch to
solve their complex search problems around different use cases,
such as creating search solutions for big data-automated intelligence
platforms in the area of counter-terrorism and risk management, as
well as in other domains, such as recruitment, e-commerce, finance,
social search, and log monitoring.
He has a keen interest in creating scalable backend platforms. His
other areas of interests are search engineering, data analytics, and
distributed computing. Java and Python are the primary languages in
which he loves to write code. He has also built a proprietary
software for consultancy firms.
In 2013, he started working on Lucene and Elasticsearch, and in
2016, he authored his first book, Elasticsearch Essentials, which was
published by Packt. He has also worked as a technical reviewer for
the book Learning Kibana 5.0 by Packt.
You can connect with him on LinkedIn at
https://in.linkedin.com/in/bharvidixit or can follow him on Twitter
@d_bharvi.
Acknowledgements
This is my second book on Elasticsearch, and I am really fascinated
by the love and feedback I got from the readers of my first book,
Elasticsearch Essentials. The book you are holding covers
Elasticsearch 5.x, the release of Elasticsearch that brings a whole lot
of features and improvements to this great search server. Hopefully,
after reading this book, you will not only get to know the underlying
architecture of Lucene and Elasticsearch, but also posses a
command over many advanced concepts, such as scripting,
improving cluster performance, writing custom Java-based plugins,
and many more.
Now it is time to say thank you.
I would like to thank my family for their continuous support,
especially my brother, Patanjali Dixit, who has been a pillar of
strength for me at each step throughout my career. I extend my big
thanks to Lavleen for the love, support, and encouragement she
gave during all those days when I was busy writing this book or
solving complex problems at work.
I would like to extend my thanks to the Packt team working on this
book, including our technical reviewer. Without their incredible
support, the book wouldn't have been as great as it is now.
I would also like to thank all the people I'm working with at Sentieo
for all their love and for creating a culture that helps make work
more fun. At Sentieo, I extend my special thanks to Atul Shah, who
always inspired me to go into the intricacies of Lucene and
Elasticsearch and solve some really complex problems using these
technologies.
Finally, thanks to Shay Banon for creating Elasticsearch and to all the
people who contributed to the libraries and modules published
around this project.
Once again, thank you.
About the Reviewer
Marcelo Ochoa works at the system laboratory of Facultad de
Ciencias Exactas of the Universidad Nacional del Centro de la
Provincia de Buenos Aires and is the CTO at scotas, a company that
specializes in near real-time search solutions using Apache Solr and
Oracle. He divides his time between university jobs and external
projects related to Oracle and big data technologies. He has worked
on several Oracle-related projects, such as the translation of Oracle
manuals and multimedia CBTs. His background is in database,
network, web, and Java technologies. In the XML world, he is known
as the developer of the DB Generator for the Apache Cocoon project.
He has worked on open source projects such as DBPrism and
DBPrism CMS, the Lucene-Oracle integration using the Oracle JVM
Directory implementation, and the Restlet.org project, where he
worked on the Oracle XDB Restlet Adapter, which is an alternative to
writing native REST web services inside a database resident JVM.
Since 2006, he has been part of an Oracle ACE program. Oracle
ACEs are known for their strong credentials as Oracle community
enthusiasts and advocates, with candidates nominated by ACEs in
the Oracle technology and applications communities. He has
coauthored Oracle Database Programming using Java and Web
Services by Digital Press and Professional XML Databases by Wrox
Press, and has worked as a technical reviewer for several Packt
books, such as Apache Solr 4 Cookbook, ElasticSearch Server, and
others.
www.PacktPub.com
For support files and downloads related to your book, please
visit www.PacktPub.com.
Did you know that Packt offers eBook versions of every book
published, with PDF and ePub files available? You can upgrade to the
eBook version at www.PacktPub.com and as a print book customer,
you are entitled to a discount on the eBook copy. Get in touch with
us at [email protected] for more details.
At www.PacktPub.com, you can also read a collection of free
technical articles, sign up for a range of free newsletters and receive
exclusive discounts and offers on Packt books and eBooks.

https://www.packtpub.com/mapt
Get the most in-demand software skills with Mapt. Mapt gives you
full access to all Packt books and video courses, as well as industry-
leading tools to help you plan your personal development and
advance your career.

Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Customer Feedback
Thanks for purchasing this Packt book. At Packt, quality is at the
heart of our editorial process. To help us improve, please leave us an
honest review on this book's Amazon page
at https://www.amazon.com/dp/1786460181.
If you'd like to join our team of regular reviewers, you can e-mail us
at [email protected]. We award our regular reviewers
with free eBooks and videos in exchange for their valuable feedback.
Help us be relentless in improving our products!
Preface
Welcome to the world of Elasticsearch and Mastering Elasticsearch
5.x, Third Edition. While reading the book, you'll be taken through
different topics—all connected to Elasticsearch. Please remember
though that this book is not meant for beginners, and we really treat
the book as a follow-up to Mastering Elasticsearch 5.x, Second
Edition, which was based on Elasticsearch version 1.4.x. There is a
lot of new content in the book since Elasticsearch has gone through
many changes between versions 1.x and 5.x.
Throughout the book, we will discuss different topics related to
Elasticsearch and Lucene. We start with an introduction to the world
of Lucene and Elasticsearch to introduce you to the world of queries
provided by Elasticsearch, where we discuss different topics related
to queries, such as filtering and which query to choose in a
particular situation. Of course, querying is not everything, and
because of that, the book you are holding in your hands provides
information on newly introduced aggregations and features that will
help you give meaning to the data you have indexed in Elasticsearch
indices and provide a better search experience for your users.
We have also decided to cover the approaches of data modeling and
handling relational data in Elasticsearch along with taking you
through the scripting module of Elasticsearch and show some
examples of using the latest default scripting language, Painless.
Even though, for most users, querying and data analysis are the
most interesting parts of Elasticsearch, they are not all that we need
to discuss. Because of this, the book tries to bring you additional
information when it comes to index architecture, such as choosing
the right number of shards and replicas, adjusting the shard
allocation behavior, and so on. We will also get into places where
Elasticsearch meets Lucene, and we will discuss topics such as
different scoring algorithms, choosing the right store mechanism,
what the differences between them are, and why choosing the
proper one matters.
Last but not least, we touch on the administration part of
Elasticsearch by discussing discovery and recovery modules and the
human-friendly cat API, which allows us to very quickly get relevant
administrative information in a form that most humans should be
able to read without parsing JSON responses. We also talk about
ingest nodes, which allow you to preprocess data within
Elasticsearch before indexing takes place and use tribe nodes, giving
the ability to create federated searches across many nodes.
Because of the title of the book, we couldn't omit performance-
related topics, and we decided to dedicate a whole chapter to it.
Just as with the second edition of the book, we decided to include a
chapter dedicated to development of Elasticsearch plugins, showing
you how to set up the Apache Maven project and develop two types
of plugins—custom REST action and custom analysis.
At the end, we have included one chapter discussing the
components of the complete Elastic Stack, and you should get a
great overview of how to start with tools such as Logstash, Kibana,
and Beats after reading the chapter.
If you think that you are interested in these topics after reading
about them, we think this is a book for you, and hopefully, you will
like the book after reading the last words of the summary in Chapter
12, Introducing Elastic Stack 5.0.
What this book covers
Chapter 1, Revisiting Elasticsearch and the Changes, guides you
through how Apache Lucene works and will introduce you to
Elasticsearch 5.x, describing the basic concepts and showing you the
important changes in Elasticsearch from version 1.x to 5.x.
Chapter 2, The Improved Query DSL, describes the new default
scoring algorithm, BM25, and how it would be better than the
previous TF-IDF algorithm. In addition to that, it explains various
Elasticsearch features, such as query rewriting, query templates,
changes in query modules, and various queries to choose from in a
given scenario.
Chapter 3, Beyond Full Text Search, describes queries about
rescoring, multimatching control, and function score queries. In
addition to that, this chapter covers the scripting module of
Elasticsearch.
Chapter 4, Data Modeling and Analytics, discusses different
approaches of data modeling in Elasticsearch and also covers how to
handle relationships among documents using parent-child and
nested data types, along with focusing on practical considerations. It
further discusses the aggregation module of Elasticsearch for the
purpose of data analytics.
Chapter 5, Improving the User Search Experience, focuses on topics
for improving the user search experience using suggesters, which
allows you to correct user-query spelling mistakes and build efficient
autocomplete mechanisms. In addition to that, it covers how to
improve query relevance and how to use synonyms to search.
Chapter 6, The Index Distribution Architecture, covers techniques for
choosing the right amount of shards and replicas, how routing
works, how shard allocation works, and how to alter its behavior. In
addition to that, we discuss what query execution preference is and
how it allows us to choose where the queries are going to be
executed.
Chapter 7, Low-Level Index Control, describes how to alter Apache
Lucene scoring and how to choose an alternative scoring algorithm.
It also covers NRT searching and indexing and transaction log usage
and allows you to understand segment merging and tune it for your
use case along with the details about removed merge policies inside
Elasticsearch 5.x. At the end of the chapter, you will also find
information about IO throttling and Elasticsearch caching.
Chapter 8, Elasticsearch Administration, focuses on concepts related
to administering Elasticsearch. It describes what the discovery,
gateway, and recovery modules are, how to configure them, and
why you should bother. We also describe what the cat API is and
how to back up and restore your data to different cloud services
(such as Amazon AWS and Microsoft Azure).
Chapter 9, Data Transformation and Federated Search, covers the
latest feature of Elasticsearch 5, that is ingest node, which allows us
to preprocess data into the Elasticsearch cluster itself before
indexing. It further tells us about how federated search works with
different clusters using tribe nodes.
Chapter 10, Improving Performance, discusses Elasticsearch
performance improvements under different loads and what the right
way of scaling production clusters is, along with covering the insights
into garbage collections and hot threads issues and how to deal with
them. It further covers query profiling and query benchmarking. In
the end, it explains the general Elasticsearch cluster tuning advice
under high query rate scenarios versus high indexing throughput
scenarios.
Chapter 11, Developing Elasticsearch Plugins, covers Elasticsearch
plugins' development by showing and describing in depth how to
write your own REST action and language analysis plugin.
Chapter 12, Introducing Elastic Stack 5.0, introduces you to the
components of Elastic Stack 5.0, covering Elasticsearch, Logstash,
Kibana, and Beats.
What you need for this book
This book was written using Elasticsearch 5.0.x, and all the examples
and functions should work with it. In addition to that, you'll need a
command-line tool that allows you to send HTTP requests such as
curl, which are available for most operating systems. Please note
that all examples in this book use the mentioned curl tool. If you
want to use another tool, please remember to format the request in
an appropriate way that is understood by the tool of your choice.
In addition to that, to run examples in Chapter 11, Developing
Elasticsearch Plugins, you will need a Java Development Kit (JDK)
Version 1.8.0_73 and above installed and an editor that will allow
you to develop your code (or a Java IDE such as Eclipse). To build
the code and manage dependencies in Chapter 11, Developing
Elasticsearch Plugins, we are using Apache Maven.
The last chapter of this book has been written using Elastic Stack
5.0.0, so you will need to have Logstash, Kibana, and Metricbeat, all
comprising the same version.
Who this book is for
This book was written for Elasticsearch users and enthusiasts who
are already familiar with the basic concepts of this great search
server and want to extend their knowledge of Elasticsearch. It also
covers topics such as how Apache Lucene or Elasticsearch works,
along with getting aware of the changes from Elasticsearch 1.x to
5.x. In addition to that, readers who want to see how to improve
their query relevancy and learn how to extend Elasticsearch with
their own plugin may find this book interesting and useful.
If you are new to Elasticsearch and you are not familiar with basic
concepts, such as querying and data indexing, you may find it a little
difficult to use this book as most of the chapters assume that you
have this knowledge already.
Exploring the Variety of Random
Documents with Different Content
the husbandman—and who was not a husbandman in those early pioneer
times in these valleys?—drove his team afield—not in the mellow soil
known to the home he had left in the East, but in the hard, uncultivated
earth of centuries of sun-baked, rainless summers, down in the bosom of the
barren valleys. He dug out the tall, gray-spiked sage brush and huge,
flaunting sunflowers, and everywhere he trenched his land in regular lines
to train down upon it the cooling streams which gave life and fertility to the
otherwise hopeless soil.

The first days of April brought the annual Conference, and everyone in
Utah laid aside work and prepared to attend the great three days' meeting.
Men in the city brought into their homes great stores of flour and food to
feed the visitors who would tarry with them during the Conference. Women
cooked meats and pastry, washed and ironed sheets and quilts and filled the
extra straw ticks to make temporary beds in every spare corner to
accommodate their usual country visitors.

For many miles on all the country roads could be seen teams of all
descriptions wending their way to Conference. A few horses, some mules,
and often great ox-teams plodded their way city-ward. Men, women and
little children cheerfully left their homes and comforts to take chances of
any kind of hospitality for the privilege of attending the prized semi-annual
religious services.

The yard of the Tithing office was filled with visiting teams and wagons of
every description, and busy women prepared food and comfort for the
hungry multitude gathered there. Children ran about, playing at hide-and-
seek, or chased each other over the ground amid wheels and wagon
tongues, grouped about in semi-confusion.

It was rather a cold and damp time, therefore the Tabernacle was well
warmed for the people gathered in happy groups for this Friday morning.
What exchanges of greetings were there as brother met brother and sister
greeted sister! Months, perhaps years had elapsed since they had seen each
other. Here was a family just come over from the "old country" standing up
between the benches to greet the throng which crowded about them to
shake their hands, for they had been good to the "elders" in England, and
every elder wanted to take them by the hand and introduce them to his
family. How quaint the old English pronunciation sounded on those newly
imported English tongues, and how queer the children looked with their
little bare, red arms, and their low, broad-toed shoes and white "pinafores,"
and how it made the Utah children laugh and stare to be told by these recent
importations to "give over now, give over;" and how the elder would smile
as the jolly mother of the new arrival would recall his words and ways
while amongst them; and how his merry eyes would sadden and fill with
tears as he heard the story of "our Mary who had died," or, far worse,
perchance, had apostatized in spite of all teachings, and who had been left
behind to her own backsliding ways! What great slaps were bestowed upon
broad backs as Brother So-and-So came up behind Brother What's-His-
Name and thus announced his pleasure at greeting his old-time friend!

As John Stevens entered the well-warmed and cosy building, a few minutes
before the meeting was called to order, his eye involuntarily became
brighter in sympathy with the merry confusion and bustle which he
witnessed all around him. Everybody was standing up and talking to
everybody else, while on the distant "stand" the elders were indulging in the
same friendly and informal greetings. Crops, the weather, babies, death,
marriage, sermons, soldiers, war, the millennium, new homespun coats, the
possible advent of a woolen mill in the Territory, carpet looms, shoe lasts,
prospective sawmills, and the best recipe for cooking dried service-berries,
all these topics buzzed in endless variety and confusion around the well-
filled hall.

But hark! all eyes are turned to the stand, as Brigham Young is heard calling
the people to come "to order," and instantly all voices are stilled; the groups
at once settle down into regularity, and the thoughts of the congregation are
fixed upon the words of the heartfelt opening prayer of Elder Chas. C. Rich.

As the choir began its second hymn, John turned in his seat to see if
Diantha and Ellen were in their seats in the choir. Yes, Diantha stood there
with her lovely form clad in its classical, simple gown of homespun, fitting
her like a molded glove, while the glorious eyes and scarlet lips were as
beautiful as ever. He looked at her so long, and as she was unconscious of
his gaze, so earnestly, that he forgot to look for Ellen.
After the hymn was over, however, he remembered Ellen and he soon saw
that her place among the altos was vacant. Where was Ellen? he wondered;
she was always at meeting.

John addressed to himself some very severe reflections, and as his mind left
his own affairs and became partly absorbed in the sermon which Elder
Orson Hyde was preaching, he gradually became conscious that he had
formed a resolution. That resolution was to forget Diantha Winthrop as
speedily as possible.

Now, this was a thing which John had never before contemplated. In all his
past associations with the girl, no matter what coldness, neglect or
discouragements he had experienced, he had never for one moment
despaired of some day winning her for his wife. He knew intuitively
something of human nature, and besides that he had felt in the depths of his
own soul a whispering assurance that the girl belonged to him, and that his
claim to her was one which had existed before they came to this earth.
Therefore he had quietly gone along, never seeking to urge himself or his
attentions upon her nor indeed upon any girl; he had concealed from her as
from everyone else the secret of his preference, and he had lived for years
with the hope in his heart which made his daily sunshine and sweetened his
every night vision. Yet now, with awakened consciousness on his part, he
found himself forming an invincible resolution never again to permit his
thoughts or his love to go out to this girl who had given him at one time
plain encouragement, and who had since, for no reason whatever, turned
upon him a colder, prouder face than she had ever done in the old days
before she had guessed his secret.

He sought, with the old Puritanic inheritance of self-investigation, to


fathom the cause of this resolution. He found his mind distracted from the
sermon which had been so interesting, and involuntarily he turned around to
look at Dian herself to see what expression she had now upon her face, and
to see if perchance her looks might have had something to do with this
strange decision. She looked as serene, as unconscious, as a statue. Her face
looked slightly weary, as if she, too, had lost interest in the sermon, and her
thoughts were on something else. But she did not look at John, and even if
she knew where he sat, she seemed to avoid meeting his eyes.
As John's gaze left her witching face, and his eyes traveled over the choir
seats, he observed Ellie's vacant seat, and he felt suddenly that Ellie had
something to do with this decision. What and how did Ellie effect this? John
was not an impulsive man, his thoughts were deep and rather slow in
forming. He allowed his mind to play upon this thought which had come to
him, and it seemed to him that a veritable inspiration flashed upon him that
Ellie was in danger, and that she needed him. He had no superstitious
notion that he could hear Ellen calling him, that is the way he would have
put it to himself; yet if he had been a more imaginative man, he would have
said that he could hear her voice in his soul pleading for help in her hour of
extremest peril.

However it was, he was so strongly impressed that he struggled as long as


he could to restrain the feeling which gave him no peace, until he finally
arose and went out of the meeting, and hastened down to the home of the
Tylers, and inquired for Ellen. Aunt Clara was at home, getting dinner for
the rest of the folks who had gone to meeting, and she answered his knock
at the door.

"Ellie, why, she is not well this morning, and she is still in bed. She did not
sleep much last night, and I told her to lie still this morning, and she could
perhaps go to meeting this afternoon."

John sat and chatted a while with his old friend, Aunt Clara, but he did not
mention the dreadful impression which he had felt that morning, and he told
himself again and again what a silly thing it was for him to give way to
such notions.

He heard later from Tom Allen that Ellen was at the afternoon meeting and
he added that fact to the scolding he had administered that morning to
himself, and assured himself that there was plenty of time to try and
persuade pretty Ellen Tyler to accept him and his home as her future
destiny.
XXXII.
"SOUR GRAPES"

A few hours later, just in the cool edge of the late afternoon, John found
himself eagerly looking over some new daguerreotypes of various of his
friends in the shop of Marcena Cannon, the photographer, on Main Street.
He was so busily engaged that he did not notice the slight noisy wrangle of
some drunken men on the street until he saw a group of them darken the
small doorway of the tiny shop. As his glance caught the fact that they were
soldiers, he withdrew into the shadow and waited for developments. He was
unwilling to embroil himself with these men, and yet he had caught sight of
the dissolute face of Captain Sherwood in the crowd, and John remained to
watch.

"Hello, Mr. Cannon," cried the tipsy captain, "we want our pictures taken.
Can you take the picture of a gentleman as well as the ugly mugs of these d
—d Mormons?"

The face of the photographer was drawn into a sneer of contempt for the
insult thus offered himself and his associates, but he only said:

"Men in my profession must be as willing to try their hands at painting a


fool as they are to take the likeness of an honest man. Are there any honest
men in your party who want to pose before my camera?"

For answer the captain only leered about the shop, pausing unsteadily
before first one picture and then another; finally he caught sight of a large
daguerreotype of President Brigham Young, done by the enterprising
pioneer photographer Marcena Cannon. Steadying himself in front of this
picture, Sherwood raised his pistol, and shot through it, the bullet
embedding itself in the wall behind. His marksmanship was so unsteady
that only the corner of the canvas was riddled; but the soldiers surrounded
their captain at once, fearing that his overt act might precipitate some
trouble. Sherwood yelled out as his shot rang into the dim silence of the
room:

"That's the way I'd serve the old scoundrel if I could get him in the same
place."

Instantly the room filled with street-loungers, although the sound was no
unusual one in those unhappy Salt Lake days. As the smoke cleared away,
Captain Sherwood found himself looking down the muzzle of John Stevens'
own revolver, while a cool, grating voice hissed in his ear:

"Git out, vermin."

The soldier, sobered by his own folly, found his small squad of men were
vastly outnumbered by the civilian police who now crowded into the tiny
room, and without further parley he assumed a braggart air, and swaggered
out of the place.

"'He who runs away'," quoth Charlie Rose, who was at John's elbow by this
time, "'may live to fight another day.' But then again he may not. You can't
sometimes always tell. Little Captain Sherwood may reach the place of his
own seeking sooner than he anticipates."

The incident only served the better to reveal the unprincipled character of a
man whom already poor John hated with a righteous vigor.

As the drunken captain, now somewhat sobered by his recent escapade,


clanked noisily down Main Street, followed by his squad, he saw Diantha,
clad in her usual comely habit, coming toward him. Instantly alert to any
possible results of this chance encounter, Captain Sherwood straightened
himself, and endeavored to assume his usual elegant swagger. But if he had
removed the traces of his recent debauch from his walk, it still lingered in
the dusky flame which burned in cheeks and chin, and above all there still
glittered in the dusk of his leering eyes that signal of danger which thrills
every weak human creature who beholds that black flag. Captain Sherwood
sober had much to recommend him to polite society—but Captain
Sherwood drunk betrayed the devil within him. Drunk or sober, he was the
acme of grace, and it was with customary lightness that he swept off his
blue cap and carrying it to his heart he bowed low with exaggerated
politeness to the frightened girl, now opposite him.

With small trace of the raging fear within her, the girl turned her head
proudly away, and with a slight motion of mingled fear and disgust she
drew her skirts aside as if to avoid possible contact, and walked coldly on,
leaving a short, dismayed silence behind her, as the men watched with
common interest this second rout of their dissolute companion and superior
officer.

"You won't speak to me?" the captain muttered thickly to himself; "well, my
tragedy queen, I know somebody who will."

To his men he only gave the word of command and the party were soon
astride of their horses and riding rapidly into the south.

It was Diantha's first experience with such evil forces; and after she was
well out of sight she flew to her home, with her heart clamoring at her
throat for swift release. Flinging herself down upon her knees she buried
her face in her pillow as she sobbed out her broken prayers to that living
Father whose tender protection she had never before sought with such
abject humility. After her heart had ceased to pound in her neck, she scolded
herself for a stupid coward of a girl—to be frightened in broad daylight, and
on Main Street, where there were plenty of good men to protect her in case
of real danger. Fright has no reason, has only eyes to see and ears to hear
the nameless possibilities which sweep the spirit out into formless space.
Presently the still small voice of reason reached her consciousness, and as
thought settled quietly down upon its throne in her troubled soul, the
question flashed along her mind: "Why is that man hanging around Great
Salt Lake City so often of late?" Then—"Ellen?" was questioned and
answered in a second illuminating thrill of pain.

Without another moment's hesitation, Diantha sprang up, bathed her face,
and the fear that had oppressed her for her own safety was transferred to her
friend.

Ellen was churning in her cool, quiet buttery. She greeted Diantha coldly,
then bade her bring a chair for herself from the kitchen.
"No, I will stand," answered Dian, too excited yet to talk calmly. "I have
had such a fright!" And she proceeded to relate her recent experiences, not
adding to nor taking from one single point; the truth was brutal enough to
this sheltered, pure-minded, unsophisticated girl. With that awful truth she
had come to warn and shield her dearest friend.

Ellen listened with her brooding eyes fixed upon her frothing churn-dash.
When the story was fairly told, she offered no word of comment.

"What do you think of that?" asked Dian, anxious to obtain her friend's
point of view.

"I don't think anything," Ellen said, at last.

"Why, Ellie, he was dead drunk."

"How could you tell such a thing as that?" asked Ellen, judicially. "What do
you or I know about drunken men?"

"Oh, his eyes, and his red face—and—and—everything—" stammered


Diantha, confused to be thus put at a disadvantage, and upon the witness-
stand. "And there was something so terrible about him every way that I just
shuddered when he looked into my eyes."

Still Ellen refused to discuss the matter. Dian persisted:

"You can't think what a fright I was in. If you could have just seen him—"

The sullen listener busied herself with her churn. And at last, she sat down
to work over her butter.

"Ellie," coaxed Diantha, "what do you think about the thing, anyway?"

The weak, delicate character of the love-sick Ellen had been turned from its
own natural candid sweetness into the gall of secretive obstinacy, by her
concealed passion; and when she was thus adjured, she simply raised her
dash to clean off the remaining globes of gold, as she said, tartly:
"If you want to know what I think about you, Dianthy Winthrop, I'll tell you
—'sour grapes'!"

Diantha was too frankly surprised for a moment to do aught but stare
stupidly at the lowered face opposite her. Then suddenly comprehending,
she said icily, her lips drawing into a sharp line across her face:

"Do you think I have made up all this story? That I am jealous? Jealous of a
vile, wicked soldier? Oh, Ellen, you surely can't think such a terrible thing
as that!"

"Would it be the first time you've been jealous of me?" asked the girl.
Dian's truthful memory received this home-thrust in silence; but she was not
thus to be thrown from her purpose.

"But, Ellen, he was drunk! Drunk, I tell you! And he is not fit to wipe your
shoes on."

"Sour grapes," muttered the scornful lips of the girl before her.

"Ellen Tyler, I came here with an honest desire to give you a friendly
warning. I don't imagine for one moment that you need it any more than I
do, or that you are not just as good and just as wise as I am—maybe more
so. But I am beginning to see things as they are: the glamor and glory and
romance which once so fascinated me is fading away, thank God—anyway
as it relates to men who drink and carouse or who do wrong. And especially
do I begin to see how unsafe we are associating with any man outside this
Church and kingdom. I have done my best to warn you, as Aunt Clara and
my brother have warned us both time and time again. We are two orphaned
girls, but God has sent us repeated warnings through our best friends and
guardians to listen and obey. We girls may or may not come to harm when
we follow our own path, but we can never come to a good end if we
disobey the counsels of those who have a right to give us such counsel. I am
going to try and heed that warning counsel. I dare not disobey. It is bred in
my very bone to give heed to the voice of wisdom. I felt a strong
impression that you needed this warning, too, and I have given it. I think
now that I shall go to Aunt Clara and tell her exactly what I have told you."
Ellen's eyes lifted quickly. But with the subtle deceit of a weak, inwardly-
selfish soul she said, smoothly:

"Don't bother to tell Aunt Clara, Dian. You have told me, and I will
remember all you say. It might only worry Aunt Clara when there is no
need."

Only half convinced, but wholly appeased by this seeming flag of truce,
Diantha chatted with her friend awhile on indifferent things and then went
away, resolved to seek some convenient opportunity after the Conference
was well over to have a long talk with Aunt Clara.

Alas, that we wait for these laggard opportunities, instead of boldly going
out to meet them in the highway! It is well to consider well before we do
evil, but good should be done on the impulse.

The next morning, which was Sunday, Ellen was at her post in the choir,
and John hurried home from meeting at noon to make arrangements with a
friend to take his place in the evening so that he could spend that Sunday
evening visiting with Ellen.

All afternoon he gently forced his mind to dwell solely and wholly upon the
real sweetness and charm of pretty Ellen Tyler. He fancied what a dear little
wife she would make and he drew all sorts of domestic pictures of what
home with such a fond little wife would be. He knew she was good, true,
lovely, and although weak in some points, he was sure that marriage would
give her all the strength and force necessary for her perfection as a woman
and as a saint. Yes, John had decided to marry—not Dian Winthrop, but
sweet, impulsive, pretty Ellen Tyler—if he could get her! If he could! Ah, if
he only could!
XXXIII.
WHERE IS ELLEN?

As the chill evening closed in that Sabbath night when the city was stilled
of all its Conference bustle,—for Conference had been adjourned to meet
again in six months—John Stevens hurried down to spend the quiet evening
hours with Ellen Tyler. He had resolved to ask her to be his wife, and if she
happily consented, he should insist that no delays of months or even weeks
were necessary, but the sweet June month, not far away with its rose-blown
days and its fragrant, mellow nights, should see their wedding day with its
tender promise of loving reality.

"Well, Aunt Clara," he said to that good lady, "I am here again, you see.
Who comes so often as I do?"

"No one that is half so welcome," she answered gently, with her kindly
smile. "Come right in, John, and let me take your hat."

"How are you all, Aunt Clara, and I suppose I may as well out with it:
where is Ellie?"

"We are well, John, and so is Ellie. She got over her little sick spell all right,
and went to meeting this morning. But she is not at home tonight, nor will
she be for a few days. I let her go home with the Meachams, who live in
Provo, you know. I have had to be away from home so much this winter and
spring, nursing the sick, that Ellen has been real lonesome. I felt a little
sorry to let her go, for I don't like our girls away from home these times.
However, you know I can't always have my way, and Ellen teased so long,
and Brother Meacham said he would be very careful of her, and as she
promised to be back inside of two weeks, I just had to let her go."

"Where did the Meachams stay, while they were here, Aunt Clara? Did they
put up with you?"
"Oh, no; you know we had all of Jane's folks from Davis County, and we
had eight of the new arrivals from England, some folks that Brother
Kimball told to come here; they had been so kind to him while he was in
England."

"I wonder where the Meachams did stay, then?" asked John, uneasily.

"I ain't sure, but I think they camped in the Tithing Yard; you know they
have a good wagon, and as they are pretty independent, they would rather
do for themselves than to stay with anyone, unless it was an own brother or
sister."

John picked up his hat with his usual slow, decisive motion, and refusing
Aunt Clara's warm invitation to stay awhile and chat with her, he left the
house, with his long, swinging strides, and was soon out of the gate, on his
way to the Tithing Yard. He did not stop to ask himself why he was going
there, for he knew that most of the teams which had camped there would be
on their hurried way for home, as soon as the Conference was once closed.
Yet he walked as rapidly as was possible for him, and he told himself that
all he hoped to find out was what hour the Meachams left, and who else
was with Ellen Tyler.

It was a dark night in the early spring. Once inside the yard he made his
way through the mass of debris and over outstretched wagon tongues to the
one lone campfire burning brightly in a distant corner of the yard. The
children were sitting with sleepy, bent heads upon their mother's knees,
listening with all but unconscious ears as one or another gave the company
the benefit of some imitation of Yorkshire dialect, or spun a yarn in canny
Scotch. As John approached the group, he noted one face, with a positive
start.

"James Meacham," he called out, unable to contain himself, "I thought you
were on your road to Provo. I was told you had started this afternoon; and
also, that you had Ellen Tyler with you, who was going with your wife and
daughter to make a short visit. How is it I find you here?"

"Well, Brother John, you find me here because I am not there; I did not
start, because I was not ready to start. And I haven't seen your precious
young friend, Ellen Tyler; no more has my wife, nor my girl Maggie, I
think. She was to be here tonight to let us know if she could go down with
us. And what's more, I am wondering why it is you are so particular to
know. Are you going to marry that fine young woman?"

"Where is Sister Meacham?" asked John, in a low tone, unheeding his


friend's raillery.

"She is just gone to bed in the wagon. Here, Maggie," he called, at the side
of the wagon, as he led the way for John, "here's John Stevens huntin' up
pretty Ellie Tyler."

"Sister Meacham, have you seen Ellen today, and do you know whether she
went to Provo with anyone else?"

"Why, Brother Stevens, I saw Ellie yesterday, and she told me she was
going to go with us down to Provo for a day or two, but she hasn't been
around today, and as I thought maybe she was wanting to get a bit readier. I
asked James to wait all night and we would go down to Tyler's in the
morning on our way out of town and pick Ellie up. Have you been down to
her house? I guess she is there, all right."

John said a few hurried words, and then hastened away in the silent night,
leaving the Meachams with a little wonder on their minds, but no suspicion
of anything serious. He remembered that Ellen often stayed at Winthrops
over night when Aunt Clara had to be out nursing, and he would go there
before he gave way to the horrible doubts and fears that were nearly
overmastering him. His knock at the door was answered by Diantha herself,
and she held out her hand to John with a pretty attempt which began at
serious coldness, but which ended like an invitation to forgive and forget.
John did not see her outstretched hand. He was too full of other emotions to
even see the welcoming sparkle in her blue eyes. He merely took off his hat
and asked laconically:

"Is Ellen Tyler over here?"

"No, I've hardly seen Ellen for weeks, that is, except at a distance." Her
manner was cold at once. He had come hunting another girl.
John's next words dispelled this coldness, and communicated to her
something of the excited fears which tore the breast of the man before her.

"Diantha, Ellen Tyler left her home this afternoon just after meeting, telling
Aunt Clara that she was going to Provo with James Meacham's family to
spend a fortnight. Aunt Clara is near worn out with nursing and Conference
visitors, and consented to let Ellie go for two weeks. Ellen took her clothes
with her, and bade them all goodbye. She is not with the Meachams, who
are still encamped in the Tithing Yard, nor is she at home nor here. Where is
she?"

Diantha looked with fixed, widening eyes at the pale face before her, and
she repeated slowly and mechanically, as if too stunned to think:

"Where is she?"
XXXIV.
IS SHE AT THE CHASE MILL?

Diantha turned without another word to John, and, flying upstairs, she was
down in a moment, with a shawl thrown around her shoulders and head.

"Come," she said, breathlessly.

"Where are you going?"

"Over to Aunt Clara, to ask her what to do. My brother Appleton is away,
and Aunt Clara will know better than anyone else what to do."

They sped along in the cool, spring evening, not exchanging one word, for
both hearts were heavy with the weight of remorse. Each knew that the
word of inspiration had warned both that Ellen was on dangerous ground,
and each knew that the word had not been heeded to the extent that it
should have been.

"Oh, for one moment to undo the past," was the pitiful tale which each heart
was telling its silent listener.

Aunt Clara's face whitened with a pallor like their own when the whole
story had been told; but in spite of the sure feeling of catastrophe which
assailed all three, Aunt Clara was too wise to allow fear to master her.

"Now, don't go to imagining that Ellen has run away because we can't just
now get trace of her. Everything will turn out all right. You haven't half
looked for her. She may have gone down with the Harpers instead of the
Meachams. Or, she may have gone out to the Chase Mill, for you remember
she did not see me the very last minute. She bade us goodbye before we
went to meeting, for she said she would not wait till we got home, we
always stay so long talking, and she wanted to get off. No, the thing to do
tonight is to find out if she is at the Chase Mill. You see, if the Meachams
have not gone, she may have found a chance to go down to the mill over
night, thinking she could go on with them in the morning."

There was a very faint glimmering of hope in this suggestion, and without
saying anything further, it was arranged that John should get permission
from the President for a three days' absence from his duties as night
guardsman, and then he should come for both Aunt Clara and Dian in his
own light spring wagon with a cover, for Dian would not listen to the others
going without her. She felt so unhappy that she could scarcely bear her own
sorrow, and she would have followed them on foot, so great was her anxiety
to know the whole truth about her beloved friend.

She sat with Aunt Clara, telling her, now that it was too late, all the things
that she knew and suspected of Ellen; of the night of the Christmas ball and
of her subsequent determination to give John up entirely to Ellen; and of
how Ellen had avoided her all winter, and how she had not broken through
her reserve, for she had thought it was due to a little jealousy on Ellen's part
on account of John. She also told her of how skilfully Ellen had parried all
her questions and all attempts to draw her out the night they slept together;
lastly she told of their stormy interview the day before.

All this the girl told with streaming eyes, and broken, sobbing breaths. Her
self-reproach and agony were terrible, and Aunt Clara wisely allowed the
first flood of her grief to spend itself before she interrupted or tried to calm
the excited girl. At last, however, the elder woman saw a chance to relieve
in a measure the unnecessary remorse, and she asked gently:

"Has Ellen ever told you she was in love with the soldier you speak of?"

"No, no indeed. The very last time we had a confidential talk, she said
almost in as many words that she would give anything in this world if John
Stevens would fall in love with her. But that was last winter, and I have
treated him as coldly as I possibly could ever since, for Ellie's sake."

"Diantha, you are taking more of this on yourself than you have any need to
do; you have not helped Ellen to do wrong, and if you spoke once to this
wicked soldier, it was but for the once. Purity does not consist in never
being at fault, or knowing what temptation is, but it is to resist that which
on reflection we know to be wrong. Ellen ought to understand this as well
as you do, dear, for, oh, I have tried to train her aright. I love her as my own
life. I have spent many an hour in trying to persuade her to avoid
temptation. I know the poor, dear girl is vain, and that makes her weak. She
lacks the strength which helps us to keep our own good opinion of
ourselves. She loves admiration and pleasure so well that, always, even as a
child, she would sacrifice anything else on earth for it." Poor Aunt Clara
was trying to drown her own self-reproaches with philosophy and moral
reflection.

"But oh, to think of Ellen gone away, and to such a horrible doom! It is too
awful," and again the girl broke into a sobbing fit. It was Dian's first real
grief, her first experience of life and its deepest trials.

"Diantha, I can see where I have failed with my poor Ellie; I have been so
anxious to nurse and help to save the sick bodies of the poor and destitute
and to administer food and raiment to the needy, that I have been at times
forgetful and careless of the sick and needy soul of my precious child, who
is like the child of my own body. True, I did not suspect anything of what
you are now telling me. But this is not wisdom. Let us not mourn over the
past, but mend the future."

At that moment John drove up, and the three rode away in the late evening
darkness, to visit the Chase Mill, on the outskirts of the city, and find out if
Ellen had been there. Aunt Clara's surmise was correct; Ellen had ridden
down there, according to the old gentleman who tended the mill, which lay
just southeast of the city. Ellen came there alone, he said, and asked for a
drink of milk. She also took some bread and butter, for she said she
expected to be taken up either by the Meachams or the Harpers, and she
was going to spend two weeks in Provo, visiting her many friends in that
place.

"How did Ellen get here?" inquired John.

"She said she came down as far as the mill with Brother Sheets. She stayed
with me here about an hour, and then, seeing a dust outside coming down
the main road, she walked over there, carrying her bundle of clothes, and
waited for the teams. I was busy getting up the cows and feeding the stock,
and did not think any more about it for about an hour, and when I looked
out to the main road for her, she was gone. I went right out, and happened to
meet a team going south, and I asked the driver if the Meachams or the
Harpers had gone on that way a little while before, and he said he thought
the Harpers were just ahead of him, as they drove out of the city about half
an hour before he did. So, of course, she has gone down to Prove. If you
want to stay over night, I will rig up some straw ticks, and make you as
comfortable as I can."

Aunt Clara could never feel satisfied to go back to the city without learning
something definite and sure about their missing girl; and so it was decided
to wait over night at the farm house, and to start very early in the morning
for Provo, and bring back their loved wanderer with them on their return
next day.
XXXV.
ON TO PROVO

What conflicting emotions swayed that little party of three as they rode
rapidly along the next day towards the town of Provo!

Diantha had chosen to sit by John on the front seat, both to accommodate
Aunt Clara, who was stout, and to comfort her own miserable heart, by
resting on his great, fortress-like personality. She was too weak just now to
stand alone, as she had done all her life. She was discovering that she was a
true woman, and she needed someone to lean on in her hour of woe.

"John," she said, "do you remember when we came home last year from
Provo, how we met those soldiers, almost here it was?" and then that
brought up the thought all were trying to put away, and Aunt Clara
interrupted:

"I wonder where the folks stayed all night! They couldn't drive clear
through to Provo after meeting was out yesterday afternoon. We didn't think
to inquire at Dr. Dunyon's at the point of the mountain, if they stayed there
over night."

"I will ask at the Bishop's as we pass through Lehi, if he saw the Harpers on
the road today."

Accordingly, they drove to the Bishop's, in Lehi, and he told them he had
seen the Harpers driving along early that morning, but they did not stop
over in the settlement.

"Did you notice if they had two or three girls with them? They had a grown
daughter of their own, and Ellen Tyler came down with them. I was
wondering if she sat on the front seat."
This was said as indifferently as it was possible, for John did not want to
arouse unnecessary suspicion or cause unnecessary talk.

"Well, I can't say that I noticed. They had the wagon cover tied up at the
sides, and there were women or girls inside, for I heard them laughing and
singing as they passed by our fence."

This was cheering, and John consented, although somewhat reluctantly, to


accept the Bishop's kindly invitation to stop and have some dinner, for he
realized the women ought to eat, even if it were impossible for him to do so.
It took some time for the worthy Bishop's wife to cook dinner, and she was
very anxious to get the best she had, for John Stevens was an old friend, and
he had done them many a good turn. Good as the dinner was, no one
seemed able to eat much, although John drank some of the rich, cold milk
which the Bishop's wife brought up from the springhouse.

It was past three o'clock when they left Lehi, and there were twenty miles to
drive to Provo. But John's team was a fine one, and at seven o'clock in the
evening, just at the early spring dusk, as they neared the edge of the bench
overlooking Provo, they all strained with hungry, eager eyes at the little
town stretched along the river bottoms, and each hoped and tried to believe
that the object of their search was sheltered beneath one of those low,
friendly roofs.

Diantha told herself that when she got hold of Ellen she would squeeze her
and pet her until she would never need the love of another person. She
would never leave her side again, for she would either forsake her own
home to live with Ellen, or she would coax Aunt Clara to let Ellen live with
her. And oh, what would she not do to make Ellen happy! She remembered
that Ellen did not like to make beds, or wash dishes. Well, she would never
have that to do again, for she would take all that work off Ellen's slender
hands. She did not mind it, and Ellen should never have to do anything she
disliked again.

On the other hand, the more experienced head of Aunt Clara was cogitating
about the possible future when they found and brought the dear wanderer
home, and she decided that Ellen must take up and faithfully perform some
of the disagreeable things which all her life she had slighted and slipped
over. She felt that perhaps she, herself, had favored Ellen too much, in that
she had allowed her to please herself always, and that too, often at the
expense of the comfort and rights of others. She saw now that what Ellen
needed was not less affection, but more discipline, to learn that happiness
does not consist in gratification of one's own wishes and desires, but in the
cheerful sacrifice of self for the good and comfort of others. She realized
now that her Ellen had that inner selfishness clothed with an outer lavish
extravagance which deceives and entices the best of casual friends. Ellen
would give up anything but her own vain pleasures. Aunt Clara had become
so accustomed to sacrificing herself for those around her, that she began to
fear lest she had thus deprived others of that chastening discipline. She
resolved again and again that she would take up another line of action with
her loved child, who was as dear as if she had been her own offspring.

John's thoughts were too deep to be discernible from his composed yet pale
face, and he said nothing, unless questioned by the others, but guided his
team with a firm yet gentle hand.

The low door of the Harpers' home opened at John's knock, and the girl
Jenny, herself, opened it.

"Ellie Tyler? Oh, no, we haven't seen her. She said Saturday in meeting that
she might come down with us, or she would come with the Meachams, and
she has promised to spend one week with me. I guess she is on the road
with the Meachams."

John knew better than that, but he would not set tongues to wagging, and so
he said again, in his quiet, yet now wily way:

"Did you see that officer from Camp Floyd as you drove out of the city last
night? I understand he has been attending our meetings. I wonder if any of
those soldiers are really interested in our Church?"

The girl caught eagerly at the bait he had so skilfully flung.

"Oh, yes, I saw him. He had a spanking team, and he passed us just before
we got to Chase's mill. He was alone, though, and if he was at meeting
yesterday I didn't see him. But I believe he was there Saturday with some
more soldiers."

John had caught the door post as she spoke, and he leaned against his arm
heavily, as he said, huskily, still determined to avoid all unnecessary talk:

"We are going to find Ellen, as there is to be a theater in the Social Hall at
the end of the week, and she is needed to take a small part. We will find her
all right; thank you."

John got out to the carriage, and in a husky voice he repeated what had been
told him, and he added:

"I am going to Bishop Miller's and get a fresh team and drive out to Camp
Floyd tonight. You can both stay at the Bishop's all night, and I will arrange
to have you driven home tomorrow."

"I shall not stay all night in Provo," said Diantha, harshly. "I will walk if
you will not take me, but I am going to Camp Floyd myself this night."

"Get in, John," said Aunt Clara's quiet voice, "and drive on to the Bishop's
and get your team. We will sit out in the carriage, and you needn't say to
anyone that we are with you, for I am anxious as yourself to keep people
from talking. We are both going with you."

John was already driving heedlessly down the street, for he had neither time
nor words to waste.

Not a word was spoken, for miles, by the three who rode so rapidly along
the dusty, rough new road which stretched ghostlike along the barren valley
between the tiny settlements in Utah Valley, and the distant encampment on
the other side of the western hills.

As they flew along in the bright young moonlight, the swift light clouds
anon parted and then banked up again, thus alternately revealing and
concealing the scene about them; at each side of the road the great bristling
sagebrush which covered the plain rose up like a high, rough hedge. Here
and there a startled rabbit flew over the lower sage bushes, losing himself in
the faint moonlight and the distance. The lake now lay before them, now
behind them, like a dark, purple shadow, its quiet ripples untouched by
breeze, and unbroken by any current. The dark mountains shut them in, and
as they neared the western rim, it seemed as if a wall of impenetrable gloom
shut off further progress; but a narrow defile led through the low hills, and
on they sped.

In the near distance a coyote yelped in shrill hunger, or answered his mate's
warning cry from the distant foothills. The cool air grew chill around them,
and Aunt Clara drew her own shawl about her, and threw upon Dian's
unconscious shoulders the extra shawl she herself had remembered to add
to their hasty preparations.

As they neared the dusky group of tents in the outer village across the
stream from Camp Floyd even John was startled as a voice sang out
suddenly:

"Who goes there?"

John saw the gleam of a musket barrel as the sentinel stepped from behind
the cedar tree.

"A friend," John answered. "Harney's the word," and John thanked his
happy fate that he had by accident or inspiration hit upon the right pass-
word. The sentinel lowered the musket, and as he approached the carriage,
Diantha shrank with a nameless terror of the night and its unknown perils
close to John's side. Without a word, John put out his arm, and drew her to
him, as if to shield her from even the gaze of wicked men; and thus he held
her close while he parleyed with the soldier.
XXXVI.
AT CAMP FLOYD

"I have important business to present to your commander. I bear with me


letters and orders from President Brigham Young, endorsed by Governor
Cumming. I must see General Johnston at once."

Diantha knew then that John had prepared himself for this before he had left
the city, and she bowed her head in shame for all it implied concerning her
beloved Ellen.

"I will leave you, Aunt Clara and Diantha," he said, as he drove on, "at the
house of one of our people at the edge of the camp, while I go in and learn
what I can from the commander. You will be perfectly safe, for Brother
Hicks is the storekeeper, and he has his wife with him, and three grown
boys. Wait here till I come for you."

John lifted Aunt Clara out, and gave the brother who came to the carriage
directions to get her something to eat, for she was nearly worn out with her
long and rough ride. Then he turned to the carriage, and taking Dian in his
great strong arms, he lifted her to the ground, and without a word, he led
her into the house, and shut the door between them.

He left the carriage at the house, and proceeded to the sleeping encampment
on foot. It was midnight, and everything was dark and silent around the
white-tented grounds. However, General Johnston arose at once in answer
to the call, and with a slightly disgusted face listened to the story told by
John.

"You will find Captain Sherwood in his own quarters, and you are at liberty
to put whatever question you may choose to him, for Captain Sherwood has
received strict orders on that subject from my own lips. My officers are
gentlemen, and the soldiers are as decent and orderly as common men in
any walk of life. I can't see on what grounds Governor Cumming interferes
with my discipline in this way."

The general was intensely annoyed over the whole matter. Evidently a girl
more or less was nothing to him. His rest and his discipline were of more
consequence than all the women in the country. Yet he could not ignore the
request of the Territorial executive, and so John was allowed to depart with
permission to go where he pleased in the camp, and to secure and take away
all the girls and women he could find or might choose to befriend. John
found his way to the officers' tents, and as he approached them, he saw the
light of a cigar in the front of one. He gave the pass-word and asked:

"May I inquire if I am near the tent of Captain Sherwood? I have business


of importance with him."

"My name is Saxey," came the answer out of the darkness, and as the cigar
was thrown away the colonel threw up the tent door and said:

"Come in, sir, whoever you are."

"My name is Stevens, and I am from Great Salt Lake City. I have reason to
believe that Captain Sherwood has abducted a young girl from our midst,
one Ellen Tyler. As she is the step-daughter of a widowed aunt, I have been
authorized by the Governor and have received permission from your
commander to do what I can to recover the young lady. Where can I find
Captain Sherwood?"

John felt willing that any of them should know the object of his visit, for he
keenly suspected that they must many of them be aware of it, anyway.
Colonel Saxey stood toying with a small dagger on his low stand, and his
kind face expressed something of the anxiety this disclosure had upon him.
It was with a different tone of voice to that used by General Johnston that
he replied:

"I have not seen any strange girl around the camp lately, but I am free to
confess to you that Sherwood was not here at all yesterday. We only review
twice a week, and so the commander did not know of his absence—an
absence without leave, I must also confess. But I do not think that anything
serious has happened, my dear Mr. Stevens. On the contrary, I hope you
will find all your suspicions are groundless. Captain Sherwood is a
gentleman." He winced a little as the familiar form of defense of a friend
slipped from his lips. "I have every reason to believe that if you should find
that the young lady you speak of has run away with the captain, he will
marry her at once, even if he has not already done so."

John Stevens said nothing, but slowly stroked his beard, as he stood
impatiently waiting to hunt the "gallant" captain up. The soldier noted the
fiery gleam and glitter in the scintillating eyes of the mountaineer, and he
felt that Sherwood would need all his skill to meet such a foe under any
circumstances. He said no more, however, but silently led the way from his
tent to Captain Sherwood's tent door.

A determined call brought out the sleepy orderly, who told Colonel Saxey
that Sherwood had been away since yesterday morning, and he did not
know anything about him. Saxey had feared this would be the result, but he
stood uncertain for a moment. Then turning to Stevens he said:

"Come," and they glided out into the night, leaving the drowsy orderly to
return to his broken slumber.

They passed rapidly through the outer lines, after giving the night pass-
word, and once beyond the chance of being overheard by soldiers within the
camp and stragglers within the village, Colonel Saxey paused in the high
sagebrush around them, and drawing near the tall, shadowy form of his
companion, he said, distinctly but softly:

"I believe you are a good man; I have seen a little of this matter, and I did
what I could to avert this disaster. I cannot tell you all I know; it would be
dishonorable. I want you to promise me one thing, and that is, that no
matter what has happened, you will not commit a greater crime to avenge
yourself of a wrong. Murder will not wipe out sin. And there is hate enough
in the Territory as it is."

"I am not a common butcher," said John, gloomily.


"I have nothing farther to say. But there is a small log cabin not far from
here, where Sherwood sometimes stays at nights." He started to go back to
his quarters; then turning back, he paused as if to speak. John waited, but no
word came from the trembling lips of the agitated soldier.

John hurried away, too anxious to wait longer, and the colonel again slowly
bent his way in the dim, midnight darkness, to the sleeping village of the
white tents, and as he passed the outer guard, he murmured:

"Have I done right, or have I done a cowardly thing?"

The guard touched his cap, and said:

"I did not understand you, sir."

"No matter," answered the colonel, as he passed on more rapidly to his tent.

"The girl may yet be saved, or he may be made to marry her," he muttered,
as he threw up his own tent door.
XXXVII.
"DEAD OR DISGRACED?"

John sped away between the high sagebrush and willows which skirted the
stream running along west from camp. At one place he found himself on the
bank and saw that the ditch ran far below in a small gully.

He could hear nothing, nor could he see any signs of human habitation. He
turned his steps in another direction and hurried onward in his zigzag
course, straining his eyes in the fading moonlight of the evening for sight of
a habitation.

All at once he heard a distant or smothered cry. He stopped at once, and as


he could hear nothing further, he fancied that he must have been mistaken,
or that it was the screech of a far-away mountain lion. He turned again in
his tracks, and by some instinct ran back to the hidden stream which flowed
along down in the deep gully. That scream again! and he was sure it was a
woman's voice. He flew now in the direction from which it had come. The
moon was down, and he could see nothing but shadows and gloom,
accustomed as he was to piercing these mountain nights with his keen, far-
sighted eyes.

Again and again that scream, and this time he saw, not many rods distant
from him, a door flung open, for it threw a stream of light across the brush
between him and the cabin. He ran on and on, jumping over the brush
occasionally and panting harder as his bounds drew him nearer the source
of those piercing screams. A man's curses and three successive shots rang
out upon the air, mingled with screams, then a hideous laugh in a harsh
voice that was still a woman's, and John could just see a flying figure bound
out from the door and disappear in the depths of the shadows of the gully.

"You she-devil!" yelled a man, as he dashed away after the figure flying
away in the darkness.
John hesitated a moment whether to follow the two who had run away, or to
make straight for the cabin; he chose the latter, and with hasty bounds, he
was soon at the door with his eyes fixed upon a figure stretched upon the
floor.

It was Ellen! A moment, and he was beside her, trying to stanch the pistol
shot wound in her gaping neck, and calling softly under his breath for her to
open her eyes.

He did not hear the heavy steps behind him, but he turned to meet the black,
blazing eyes of Louisiana Liz, peeping in the door behind him, her smoking
pistol still in her hand, and then he heard the woman howl with wicked
laughter:

"You sought your flown bird too late, for the huntsman found her heart and
the keen arrow of hate found her throat almost as soon. Ha, ha, ha!"

John's blood curdled in his veins, and he held the dying girl closer to him as
he bent his head over her.

Ellie opened her eyes as she felt John's presence, and whispered painfully,
"Tell Aunt Clara to forgive me; I am so sorry. I am—so—sorry—"

John never knew how he allowed that sweet life to flicker out, for he felt as
if he could arise and grapple with Death himself and conquer the grim
destroyer of all this beauty and youth.

"Well, my long-bearded friend," gasped a hoarse voice behind him; "you


seem to have served your sweetheart a pretty ghastly trick."

John laid the body of his dead upon the earthen floor of the hut, and with a
spring he was upon his adversary. But the soldier, who was too quick for
him, dodged the blow, and ran out of the door. John followed, and ran this
way and that, but the darkness and the unfamiliarity of the place rendered it
impossible for him to find the villain who had thus dared to imply that he
himself had been guilty of this awful deed.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like