= Indexing and Basic Data Operations
:page-children: introduction-to-solr-indexing, +
  post-tool, +
  uploading-data-with-index-handlers, +
  indexing-nested-documents, +
  uploading-data-with-solr-cell-using-apache-tika, +
  updating-parts-of-documents, +
  detecting-languages-during-indexing, +
  de-duplication, +
  content-streams, +
  reindexing

// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

This section describes how Solr adds data to its index. It covers the following topics:

* *<<introduction-to-solr-indexing.adoc#,Introduction to Solr Indexing>>*: An overview of Solr's indexing process.

* *<<post-tool.adoc#,Post Tool>>*: Information about using `post.jar` to quickly upload some content to your system.

* *<<uploading-data-with-index-handlers.adoc#,Uploading Data with Index Handlers>>*: Information about using Solr's Index Handlers to upload XML/XSLT, JSON and CSV data.

* *<<transforming-and-indexing-custom-json.adoc#,Transforming and Indexing Custom JSON>>*: Index any JSON of your choice

* *<<indexing-nested-documents.adoc#,Indexing Nested Documents>>*: Detailed information about indexing and schema configuration for nested documents.

* *<<uploading-data-with-solr-cell-using-apache-tika.adoc#,Uploading Data with Solr Cell using Apache Tika>>*: Information about using the Solr Cell framework to upload data for indexing.

* *<<updating-parts-of-documents.adoc#,Updating Parts of Documents>>*: Information about how to use atomic updates and optimistic concurrency with Solr.

* *<<detecting-languages-during-indexing.adoc#,Detecting Languages During Indexing>>*: Information about using language identification during the indexing process.

* *<<de-duplication.adoc#,De-Duplication>>*: Information about configuring Solr to mark duplicate documents as they are indexed.

* *<<content-streams.adoc#,Content Streams>>*: Information about streaming content to Solr Request Handlers.

* *<<reindexing.adoc#,Reindexing>>*: Details about when reindexing is required or recommended, and some strategies for completely reindexing your documents.

== Indexing Using Client APIs

Using client APIs, such as <<using-solrj.adoc#,SolrJ>>, from your applications is an important option for updating Solr indexes. See the <<client-apis.adoc#,Client APIs>> section for more information.
