Browse Source

Added elasticsearch 2.4 support.

Martin Edenhofer 8 years ago
parent
commit
5fc8e6c510

+ 3 - 3
app/models/ticket/search.rb

@@ -111,18 +111,18 @@ returns
           group_condition.push group.id
         }
         access_condition = {
-          'query_string' => { 'default_field' => 'Ticket.group_id', 'query' => "\"#{group_condition.join('" OR "')}\"" }
+          'query_string' => { 'default_field' => 'group_id', 'query' => "\"#{group_condition.join('" OR "')}\"" }
         }
       else
         access_condition = if !current_user.organization || ( !current_user.organization.shared || current_user.organization.shared == false )
                              {
-                               'query_string' => { 'default_field' => 'Ticket.customer_id', 'query' => current_user.id }
+                               'query_string' => { 'default_field' => 'customer_id', 'query' => current_user.id }
                              }
                            #  customer_id: XXX
                            #          conditions = [ 'customer_id = ?', current_user.id ]
                            else
                              {
-                               'query_string' => { 'query' => "Ticket.customer_id:#{current_user.id} OR Ticket.organization_id:#{current_user.organization.id}" }
+                               'query_string' => { 'query' => "customer_id:#{current_user.id} OR organization_id:#{current_user.organization.id}" }
                              }
                              # customer_id: XXX OR organization_id: XXX
                              #          conditions = [ '( customer_id = ? OR organization_id = ? )', current_user.id, current_user.organization.id ]

+ 5 - 5
app/models/ticket/search_index.rb

@@ -33,7 +33,7 @@ returns
 
     # collect article data
     articles = Ticket::Article.where(ticket_id: id)
-    attributes['articles'] = []
+    attributes['article'] = []
     articles.each { |article|
       article_attributes = article.attributes
 
@@ -53,8 +53,8 @@ returns
 
       # lookup attachments
       article.attachments.each { |attachment|
-        if !article_attributes['attachments']
-          article_attributes['attachments'] = []
+        if !article_attributes['attachment']
+          article_attributes['attachment'] = []
         end
 
         # check file size
@@ -73,9 +73,9 @@ returns
           '_name'    => attachment.filename,
           '_content' => Base64.encode64(attachment.content)
         }
-        article_attributes['attachments'].push data
+        article_attributes['attachment'].push data
       }
-      attributes['articles'].push article_attributes
+      attributes['article'].push article_attributes
     }
 
     attributes

+ 4 - 3
lib/tasks/search_index_es.rake

@@ -21,12 +21,13 @@ namespace :searchindex do
       data: {
         mappings: {
           Ticket: {
-            _source: { excludes: [ 'articles.attachments' ] },
+            _source: { excludes: [ 'article.attachment' ] },
             properties: {
-              articles: {
+              article: {
                 type: 'nested',
+                include_in_parent: true,
                 properties: {
-                  attachments: {
+                  attachment: {
                     type: 'attachment',
                   }
                 }

+ 28 - 2
test/integration/elasticsearch_test.rb

@@ -148,7 +148,6 @@ class ElasticsearchTest < ActiveSupport::TestCase
     )
 
     attributes = ticket1.search_index_attribute_lookup
-
     assert_equal('Users', attributes['group'])
     assert_equal('new', attributes['state'])
     assert_equal('2 normal', attributes['priority'])
@@ -472,7 +471,34 @@ class ElasticsearchTest < ActiveSupport::TestCase
       limit: 15,
     )
     assert(result[0], 'record 1')
-    assert(!result[1], 'record 1')
+    assert(!result[1], 'record 2')
+    assert_equal(result[0].id, ticket1.id)
+
+    result = Ticket.search(
+      current_user: agent,
+      query: 'state:open',
+      limit: 15,
+    )
+    assert(result[0], 'record 1')
+    assert(!result[1], 'record 2')
+    assert_equal(result[0].id, ticket2.id)
+
+    result = Ticket.search(
+      current_user: agent,
+      query: '"some_sender@example.com"',
+      limit: 15,
+    )
+    assert(result[0], 'record 1')
+    assert(!result[1], 'record 2')
+    assert_equal(result[0].id, ticket1.id)
+
+    result = Ticket.search(
+      current_user: agent,
+      query: 'article.from:"some_sender@example.com"',
+      limit: 15,
+    )
+    assert(result[0], 'record 1')
+    assert(!result[1], 'record 2')
     assert_equal(result[0].id, ticket1.id)
 
   end