private PutMappingDescriptor <T> MapSuppressedEmailCompletionFields <T>(PutMappingDescriptor <T> pmd) where T : SuppressedEmail { return(pmd .Properties(props => props .String(s => s.Name("email").Index(FieldIndexOption.NotAnalyzed).Store(true).IndexAnalyzer("duplicateCheckAnalyzer").SearchAnalyzer("duplicateCheckAnalyzer"))) .TimestampField(t => t .Enabled(true))); }
private PutMappingDescriptor <T> MapSuppressionListFields <T>(PutMappingDescriptor <T> pmd) where T : SuppressionList { if (typeof(T).Equals(typeof(SuppressedEmail))) { return(pmd .Properties(props => props .String(s => s.Name("email").Index(FieldIndexOption.NotAnalyzed).Store(true).IndexAnalyzer("duplicateCheckAnalyzer").SearchAnalyzer("duplicateCheckAnalyzer"))) .TimestampField(t => t .Enabled(true))); } else { return(pmd .Properties(props => props .String(s => s.Name("domain").Index(FieldIndexOption.NotAnalyzed).Store(true).IndexAnalyzer("duplicateCheckAnalyzer").SearchAnalyzer("duplicateCheckAnalyzer"))) .TimestampField(t => t .Enabled(true))); } }
private PutMappingDescriptor <TContact> MapTagCompletionFields <TContact>( PutMappingDescriptor <TContact> tmd) where TContact : Tag { return(tmd.Properties(props => props .Completion(s => s .Name(p => p.TagNameAutoComplete) .IndexAnalyzer("custom") .SearchAnalyzer("custom") .MaxInputLength(75) .Payloads() .PreservePositionIncrements() .PreserveSeparators() ) )); }
private PutMappingDescriptor <TContact> MapContactCompletionFields <TContact>(PutMappingDescriptor <TContact> pmd) where TContact : Contact { return(pmd .Properties(props => props .Completion(s => s .Name(p => p.TitleAutoComplete) .IndexAnalyzer("standard") .SearchAnalyzer("standard") .MaxInputLength(30) .Payloads() .PreservePositionIncrements() .PreserveSeparators() ) .Completion(s => s .Name(p => p.ContactFullNameAutoComplete) .IndexAnalyzer("standard") .SearchAnalyzer("standard") .MaxInputLength(75) .Payloads() .PreservePositionIncrements() .PreserveSeparators() ) .Completion(s => s .Name(p => p.CompanyNameAutoComplete) .IndexAnalyzer("standard") .SearchAnalyzer("standard") .MaxInputLength(50) .Payloads() .PreservePositionIncrements() .PreserveSeparators() ) .Completion(s => s .Name(p => p.EmailAutoComplete) .IndexAnalyzer("standard") .SearchAnalyzer("standard") .MaxInputLength(200) .Payloads() .PreservePositionIncrements() .PreserveSeparators() ) .Completion(s => s .Name(p => p.PhoneNumberAutoComplete) .IndexAnalyzer("standard") .SearchAnalyzer("standard") .MaxInputLength(200) .Payloads() .PreservePositionIncrements() .PreserveSeparators() ) .String(s => s.Name("firstName").Boost(1.0)) .String(s => s.Name("lastName").Boost(1.0)) .String(s => s.Name("title").Boost(1.0)) .String(s => s.Name("addresses.addressLine1").Index(FieldIndexOption.Analyzed).Store(true).IndexAnalyzer("duplicateCheckAnalyzer").SearchAnalyzer("duplicateCheckAnalyzer")) .String(s => s.Name("addresses.addressLine2").Index(FieldIndexOption.Analyzed).Store(true).IndexAnalyzer("duplicateCheckAnalyzer").SearchAnalyzer("duplicateCheckAnalyzer")) .String(s => s.Name("addresses.city").Index(FieldIndexOption.Analyzed).Store(true).IndexAnalyzer("duplicateCheckAnalyzer").SearchAnalyzer("duplicateCheckAnalyzer")) .String(s => s.Name("addresses.zipCode").Index(FieldIndexOption.Analyzed).Store(true).IndexAnalyzer("duplicateCheckAnalyzer").SearchAnalyzer("duplicateCheckAnalyzer")) //FieldIndexOption.Analyzed will split the string into tokens, but if we use duplicateCheckAnalyzer with keyword tokenizer it won't split the string. .Date(s => s.Name("createdOn").Format("yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss||MM/dd/yyyy||yyyy/MM/dd")) .Date(s => s.Name("lastContacted").Format("yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss||MM/dd/yyyy||yyyy/MM/dd")) .Date(s => s.Name("lastUpdatedOn").Format("yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss||MM/dd/yyyy||yyyy/MM/dd")) .Date(s => s.Name("lastNoteDate").Format("yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss||MM/dd/yyyy||yyyy/MM/dd")) .String(s => s.Name("addresses.state.code").Index(FieldIndexOption.NotAnalyzed)) .String(s => s.Name("noteSummary").Index(FieldIndexOption.NotAnalyzed)) .String(s => s.Name("emails.emailId").Index(FieldIndexOption.NotAnalyzed).Boost(1.0)) .NestedObject <ContactTourCommunityMap>(a => a .Name("tourCommunity") .Dynamic() .IncludeInRoot() .Properties(p => p .Number(n => n.Name(na => na.CommunityID)) .Number(n => n.Name(na => na.TourType)) .Number(n => n.Name(na => na.TourID)) .Number(n => n.Name(na => na.ContactId)) .Date(n => n.Name(na => na.TourDate).Format("yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss||MM/dd/yyyy||yyyy/MM/dd")) .Number(n => n.Name(na => na.CreatedBy)))) .NestedObject <ContactActionMap>(a => a .Name("contactActions") .Dynamic() .IncludeInRoot() .Properties(p => p .Date(n => n.Name(na => na.ActionDate).Format("yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss||MM/dd/yyyy||yyyy/MM/dd")) .Number(n => n.Name(na => na.ActionID)) .Number(n => n.Name(na => na.ActionType)) .Number(n => n.Name(na => na.ContactId)) .Date(n => n.Name(na => na.CreatedOn).Format("yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss||MM/dd/yyyy||yyyy/MM/dd")))) .NestedObject <ContactNoteMap>(a => a .Name("contactNotes") .Dynamic() .IncludeInRoot() .Properties(p => p .Date(n => n.Name(na => na.CreatedOn).Format("yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss||MM/dd/yyyy||yyyy/MM/dd")) .Number(n => n.Name(na => na.NoteID)) .Number(n => n.Name(na => na.NoteCategory)) .Number(n => n.Name(na => na.ContactID)) .Number(n => n.Name(na => na.CreatedBy)) .String(n => n.Name(na => na.NoteDetails)))) .NestedObject <ContactCustomField>(no => no .Name("customFields") .Dynamic() .IncludeInRoot() .Properties(p => p .String(s => s.Name(sn => sn.Value).Index(FieldIndexOption.NotAnalyzed)) .Date(d => d.Name(dn => dn.Value_Date).Format("yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss||MM/dd/yyyy||yyyy/MM/dd").NullValue(new DateTime())) .Number(n => n.Name(nam => nam.Value_Multiselect)) .Number(n => n.Name(nam => nam.Value_Multiselect_Count)) .Number(n => n.Name(nam => nam.Value_Number)) .Number(n => n.Name(nam => nam.FieldInputTypeId)) .Number(n => n.Name(nam => nam.CustomFieldId)) .Number(n => n.Name(nam => nam.ContactId)) .Number(n => n.Name(nam => nam.ContactCustomFieldMapId)))) .NestedObject <WebVisit>(w => w .Name("webVisits") .Dynamic() .IncludeInRoot() .Properties(p => p .Number(s => s.Name(sn => sn.ContactID)) .Date(s => s.Name(sn => sn.VisitedOn).Format("yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss||MM/dd/yyyy||yyyy/MM/dd").NullValue(new DateTime())) .String(s => s.Name(sn => sn.PageVisited).Index(FieldIndexOption.NotAnalyzed)) .Number(s => s.Name(sn => sn.Duration)))) .NestedObject <DropdownValue>(w => w .Name("leadSources") .Dynamic() .IncludeInRoot() .Properties(p => p .Date(s => s.Name(na => na.LastUpdatedDate).Format("yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss||MM/dd/yyyy||yyyy/MM/dd").NullValue(new DateTime())) .Boolean(s => s.Name(na => na.IsPrimary)) .Number(s => s.Name(na => na.Id)))) .MultiField(m => m .Name(n => n.FacebookLink) .Fields(f => f .String(s => s.Name(n => n.FacebookLink) .Index(FieldIndexOption.Analyzed)) .String(s => s.Name(n => n.FacebookLink.Suffix("Raw")) .Index(FieldIndexOption.Analyzed) .Store(true) .IndexAnalyzer("duplicateCheckAnalyzer") .SearchAnalyzer("duplicateCheckAnalyzer")))) .MultiField(m => m .Name(n => n.TwitterLink) .Fields(f => f .String(s => s.Name(n => n.TwitterLink) .Index(FieldIndexOption.Analyzed)) .String(s => s.Name(n => n.TwitterLink.Suffix("Raw")) .Index(FieldIndexOption.Analyzed) .Store(true) .IndexAnalyzer("duplicateCheckAnalyzer") .SearchAnalyzer("duplicateCheckAnalyzer")))) .MultiField(m => m .Name(n => n.LinkedInLink) .Fields(f => f .String(s => s.Name(n => n.LinkedInLink) .Index(FieldIndexOption.Analyzed)) .String(s => s.Name(n => n.LinkedInLink.Suffix("Raw")) .Index(FieldIndexOption.Analyzed) .Store(true) .IndexAnalyzer("duplicateCheckAnalyzer") .SearchAnalyzer("duplicateCheckAnalyzer")))) .MultiField(m => m .Name(n => n.GooglePlusLink) .Fields(f => f .String(s => s.Name(n => n.GooglePlusLink) .Index(FieldIndexOption.Analyzed)) .String(s => s.Name(n => n.GooglePlusLink.Suffix("Raw")) .Index(FieldIndexOption.Analyzed) .Store(true) .IndexAnalyzer("duplicateCheckAnalyzer") .SearchAnalyzer("duplicateCheckAnalyzer")))) .MultiField(m => m .Name(n => n.WebsiteLink) .Fields(f => f .String(s => s.Name(n => n.WebsiteLink) .Index(FieldIndexOption.Analyzed)) .String(s => s.Name(n => n.WebsiteLink.Suffix("Raw")) .Index(FieldIndexOption.Analyzed) .Store(true) .IndexAnalyzer("duplicateCheckAnalyzer") .SearchAnalyzer("duplicateCheckAnalyzer")))) .MultiField(m => m .Name(n => n.BlogLink) .Fields(f => f .String(s => s.Name(n => n.BlogLink) .Index(FieldIndexOption.Analyzed)) .String(s => s.Name(n => n.BlogLink.Suffix("Raw")) .Index(FieldIndexOption.Analyzed) .Store(true) .IndexAnalyzer("duplicateCheckAnalyzer") .SearchAnalyzer("duplicateCheckAnalyzer")))) .MultiField(m => m .Name(s => s.CompanyName) .Fields(f => f .String(s => s.Name(n => n.CompanyName) .Index(FieldIndexOption.Analyzed).Boost(1.0)) .String(s => s.Name(n => n .CompanyName.Suffix("companyNameFull")) .Index(FieldIndexOption.Analyzed) .Store(true) .IndexAnalyzer("duplicateCheckAnalyzer") .SearchAnalyzer("duplicateCheckAnalyzer")))) .MultiField(m => m .Name("firstName") .Fields(f => f .String(s => s.Name("firstName") .Index(FieldIndexOption.Analyzed)) .String(s => s.Name(n => n .CompanyName.Suffix("firstNameFull")) .Index(FieldIndexOption.Analyzed) .Store(true) .IndexAnalyzer("duplicateCheckAnalyzer") .SearchAnalyzer("duplicateCheckAnalyzer")))) .MultiField(m => m .Name("lastName") .Fields(f => f .String(s => s.Name("lastName") .Index(FieldIndexOption.Analyzed)) .String(s => s.Name(n => n .CompanyName.Suffix("lastNameFull")) .Index(FieldIndexOption.Analyzed) .Store(true) .IndexAnalyzer("duplicateCheckAnalyzer") .SearchAnalyzer("duplicateCheckAnalyzer")))) .MultiField(m => m. Name("title") .Fields(f => f .String(s => s.Name("title") .Index(FieldIndexOption.Analyzed)) .String(s => s.Name(n => n .CompanyName.Suffix("titleFull")) .Index(FieldIndexOption.Analyzed) .Store(true) .IndexAnalyzer("duplicateCheckAnalyzer") .SearchAnalyzer("duplicateCheckAnalyzer")))) .Date(d => d .Name("_timestamp") .Store(true)) ) .TimestampField(t => t .Enabled(true))); }