You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2020/12/23 03:51:17 UTC

[james-project] 03/10: MAILBOX-403 From, To, Cc, Bcc fields do not need to be nested

This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit c83d74a53d2eab20369eae0c386d9652b5f8c349
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Dec 22 08:41:45 2020 +0700

    MAILBOX-403 From, To, Cc, Bcc fields do not need to be nested
    
    Nested fields leads to the indexation of extra documents
---
 .../james/mailbox/elasticsearch/MailboxMappingFactory.java    |  4 ----
 .../james/mailbox/elasticsearch/query/CriterionConverter.java | 10 ++++------
 .../james/mailbox/elasticsearch/query/SortConverter.java      | 11 +++++------
 3 files changed, 9 insertions(+), 16 deletions(-)

diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxMappingFactory.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxMappingFactory.java
index 629f292..088a288 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxMappingFactory.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxMappingFactory.java
@@ -159,7 +159,6 @@ public class MailboxMappingFactory {
                         .endObject()
 
                         .startObject(FROM)
-                            .field(TYPE, NESTED)
                             .startObject(PROPERTIES)
                                 .startObject(EMailer.NAME)
                                     .field(TYPE, TEXT)
@@ -210,7 +209,6 @@ public class MailboxMappingFactory {
                         .endObject()
 
                         .startObject(TO)
-                            .field(TYPE, NESTED)
                             .startObject(PROPERTIES)
                                 .startObject(EMailer.NAME)
                                     .field(TYPE, TEXT)
@@ -237,7 +235,6 @@ public class MailboxMappingFactory {
                         .endObject()
 
                         .startObject(CC)
-                            .field(TYPE, NESTED)
                             .startObject(PROPERTIES)
                                 .startObject(EMailer.NAME)
                                     .field(TYPE, TEXT)
@@ -264,7 +261,6 @@ public class MailboxMappingFactory {
                         .endObject()
 
                         .startObject(BCC)
-                            .field(TYPE, NESTED)
                             .startObject(PROPERTIES)
                                 .startObject(EMailer.NAME)
                                     .field(TYPE, TEXT)
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/query/CriterionConverter.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/query/CriterionConverter.java
index 8937807..031dd47 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/query/CriterionConverter.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/query/CriterionConverter.java
@@ -278,12 +278,10 @@ public class CriterionConverter {
     }
 
     private QueryBuilder manageAddressFields(String headerName, String value) {
-        return nestedQuery(getFieldNameFromHeaderName(headerName),
-            boolQuery()
-                .should(matchQuery(getFieldNameFromHeaderName(headerName) + "." + JsonMessageConstants.EMailer.NAME, value))
-                .should(matchQuery(getFieldNameFromHeaderName(headerName) + "." + JsonMessageConstants.EMailer.ADDRESS, value))
-                .should(matchQuery(getFieldNameFromHeaderName(headerName) + "." + JsonMessageConstants.EMailer.ADDRESS + "." + RAW, value)),
-            ScoreMode.Avg);
+        return boolQuery()
+            .should(matchQuery(getFieldNameFromHeaderName(headerName) + "." + JsonMessageConstants.EMailer.NAME, value))
+            .should(matchQuery(getFieldNameFromHeaderName(headerName) + "." + JsonMessageConstants.EMailer.ADDRESS, value))
+            .should(matchQuery(getFieldNameFromHeaderName(headerName) + "." + JsonMessageConstants.EMailer.ADDRESS + "." + RAW, value));
     }
 
     private String getFieldNameFromHeaderName(String headerName) {
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/query/SortConverter.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/query/SortConverter.java
index 29323b7..0dcc02c 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/query/SortConverter.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/query/SortConverter.java
@@ -23,7 +23,6 @@ import org.apache.james.backends.es.NodeMappingFactory;
 import org.apache.james.mailbox.elasticsearch.json.JsonMessageConstants;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.elasticsearch.search.sort.FieldSortBuilder;
-import org.elasticsearch.search.sort.NestedSortBuilder;
 import org.elasticsearch.search.sort.SortBuilders;
 import org.elasticsearch.search.sort.SortMode;
 import org.elasticsearch.search.sort.SortOrder;
@@ -44,13 +43,13 @@ public class SortConverter {
                 return SortBuilders.fieldSort(JsonMessageConstants.DATE);
             case MailboxCc :
                 return SortBuilders.fieldSort(JsonMessageConstants.CC + PATH_SEPARATOR + JsonMessageConstants.EMailer.ADDRESS
-                    + PATH_SEPARATOR + NodeMappingFactory.RAW).setNestedSort(new NestedSortBuilder(JsonMessageConstants.CC));
+                    + PATH_SEPARATOR + NodeMappingFactory.RAW);
             case MailboxFrom :
                 return SortBuilders.fieldSort(JsonMessageConstants.FROM + PATH_SEPARATOR + JsonMessageConstants.EMailer.ADDRESS
-                    + PATH_SEPARATOR + NodeMappingFactory.RAW).setNestedSort(new NestedSortBuilder(JsonMessageConstants.FROM));
+                    + PATH_SEPARATOR + NodeMappingFactory.RAW);
             case MailboxTo :
                 return SortBuilders.fieldSort(JsonMessageConstants.TO + PATH_SEPARATOR + JsonMessageConstants.EMailer.ADDRESS
-                    + PATH_SEPARATOR + NodeMappingFactory.RAW).setNestedSort(new NestedSortBuilder(JsonMessageConstants.TO));
+                    + PATH_SEPARATOR + NodeMappingFactory.RAW);
             case BaseSubject :
                 return SortBuilders.fieldSort(JsonMessageConstants.SUBJECT + PATH_SEPARATOR + NodeMappingFactory.RAW);
             case Size :
@@ -61,10 +60,10 @@ public class SortConverter {
                 return SortBuilders.fieldSort(JsonMessageConstants.UID);
             case DisplayFrom:
                 return SortBuilders.fieldSort(JsonMessageConstants.FROM + PATH_SEPARATOR + JsonMessageConstants.EMailer.NAME
-                    + PATH_SEPARATOR + NodeMappingFactory.RAW).setNestedSort(new NestedSortBuilder(JsonMessageConstants.FROM));
+                    + PATH_SEPARATOR + NodeMappingFactory.RAW);
             case DisplayTo:
                 return SortBuilders.fieldSort(JsonMessageConstants.TO + PATH_SEPARATOR + JsonMessageConstants.EMailer.NAME
-                    + PATH_SEPARATOR + NodeMappingFactory.RAW).setNestedSort(new NestedSortBuilder(JsonMessageConstants.TO));
+                    + PATH_SEPARATOR + NodeMappingFactory.RAW);
             case Id:
                 return SortBuilders.fieldSort(JsonMessageConstants.MESSAGE_ID);
             default:


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org