Analyzing the proposed approach
Let's look at the workaround code from the linked article:
var poolPath = "aggregationProcessing/processingPools/live";
var pool = Factory.CreateObject(poolPath, true) as ProcessingPool;
var driver = MongoDbDriver.FromConnectionString("analytics");
Do not delete contacts
Simply deleting a contact is a bad idea. It doesn't take into account so many entities that are related to the contact! Here's a very incomplete list of things to consider:
The contact's interactions will remain in the xDB. They'll continue to be associated with the non-existing contact, which may result in run-time errors.
The sitecore_analytics_index stores information about interactions, contacts, and some other xDB entities. The more data you collect, the bigger the index will grow. The more visits you have in a given time period, the more frequent index reads and writes will be.
Whether or not you should switch from Lucene to Solr depends on whether the high hard disk ...
After that you might run the following to update the index:
var index = Sitecore.ContentSearch.ContentSearchManager.GetAnalyticsIndex();
But note that it is time and resource consuming.
Sitecore store all the data in collection db first (mongo db or starting from 9.0 you can also use SQL database for this), then transfers the data to reporting database (it will take around 20 min).
So you can try below senario if data is not appearing in reporting database:
All the anonymous visitors should be tracked in collection database, a couple of ...
The general reasons for using Solr instead of Lucene are:
When you need to index large numbers of items (50,000 and up), Solr performs better, so in your case you have to use SOLR
Solr is more robust. If your site depends on search as the primary interface, consider using Solr.
If you use multiple content delivery servers (or plan to do so later), use ...
In general Solr usage, there are a few things you could do in order to tweak how data is stored in the index. In terms of Sitecore, I am not fully sure if the exact same rules apply, due to the way Sitecore internally might work with the indexes - so you may want to be a bit careful, when trying some of these things out and perform a thorough test for each ...
I had a similar issue. Make sure you follow the below steps exactly as-is and I am sure you will see a difference.
Update IndexerSettings.xml file within [site_prefix].xconnect\App_data\jobs\continuous\IndexWorker\App_data\Config\Sitecore\SearchIndexer to change IndexAnonymousContactData to true
Update IndexerSettings.xml within [site_prefix].xconnect\...
There's no ready-made way to reduce the index - short of rebuilding it without the documents you are trying to exclude. You're definitely facing a custom task here. Contacts are indexed by an "observer". Unlike a crawler, this attaches itself to events on the contact object and updates trigger writes to the index.
We have built a hack process that loops ...
The Analytics index can cripple Solr too, I've seen this in production environments. You want to pay special attention to the memory settings for Solr and the JVM and make sure you have enough disk capacity and RAM to handle it as it grows. As merges take place, the analytics index of ~1 million documents can grow up to 20 GB in size.
It may not be enough ...
Also make sure you have this setting on to allow the tracking of anonymous visitors. By default it is false and will not track anonymous:
<setting name="ContentSearch.Analytics.IndexAnonymousContacts" value="true"/>
Here you can read more about Tracking anonymous users in Xdb post 8.2 update-3
One other tip for your scenario. As you're generating test visits, not only do you need to clear cookies to appear as a different user, but at the end of each browsing session, you'll want to hit an endpoint (e.g. aspx page or MVC action) which flushes your session:
Content delivery should be unaffected, as you stated, unless you're doing something custom and accessing analytics data from front-end code. Reporting could be extremely slow, depending on the quantity of data in your DB.
Indexes are generally disposable; they aren't the canonical source of any data. Once you rebuild the index as you describe, the index ...
The second link you described is the way to rebuild the analytics index without rebuilding the entire reporting database.
But why should you not use the rebuild of the reporting database? It is always better to do the entire rebuild and reindex instead of just rebuilding your index. If you have somehow corrupt data in your reporting database, your index ...
There is an agent, Sitecore.ContentSearch.Tasks.Optimize, that controls which indexes are regularly optimized and how frequently. Open up your <your_site>/sitecore/admin/showconfig.aspx and look for this agent. It should look something like the below:
<agent type="Sitecore.ContentSearch.Tasks.Optimize" method="Run" interval="12:00:00">
You need to add new custom submit action which will map first name ,last name and email fields to XConnect facet values and store them in XConnect.
In order to achieve this, you need to create Speak dialog, custom submit action and custom class.
Follow this article in Sitecore documentation to achieve this:
The Experience Profile uses facets to display the names and emails. So you will need to set the proper facet (of the correct type and filled data) into the XConnectClient object.
I've done something similar below, I had to create an EmailAddressList facet object in addition to the PersonalInformation facet object to fill in the names and emails:
The only data I can see which you can clear is from the Interaction collection in MongoDB. The steps are
First to remove the interaction from MongoDB which has a savedatetime greater than 3 months
Trigger the rebuild reporting database for the experience analytics dashboard to get updated.
Note that rebuild reporting database can take time to complete ...
From my Sitecore Ticket...
In order to configure xConnect to use basic authentication you will
need to modify the connection string:
For more information please consider reading
Sitecore will track visits, but you will need to make sure the cookies are cleared or you use different browsers. Otherwise, it will think you are the same user doing multiple visits.
You will need to make sure you have your analytics set up and working. You may trigger a bunch of visits, but if you do not see any data then you will need to investigate your ...
I added a custom field in this open source project I wrote. https://github.com/buildabonfire/Bonfire-Company-Personalization
Get the data
First you need a pipeline to pull the facet from the contact facet in xDB.