This document discusses marrying natural language processing (NLP) techniques with Elasticsearch to solve real-world search problems. It outlines the key ingredients of gathering and extracting content from data sources, preprocessing text, and modeling terms, phrases and entities. It then describes how Elasticsearch can be used for basic analysis, filtering, recommendations and deduplication. Specific NLP techniques like key phrase extraction, named entity recognition and semantic hashing are proposed to improve search quality beyond bag-of-words approaches. The document concludes with a summary of considering analysis, queries, indexing versus search tradeoffs, and paying attention to the data input step.