Is filtering on the _size field allowed on percolate requests? 

Adding into a percolate query in either a filter or the query section a 
_size range matches no documents. 

Walking through reproducing the problem: 

Register the query: 

curl -XPUT 'http://localhost:9200/_percolator/test_index/queryNamedSue' -d 
'{ 
  "query" : { 
    "constant_score": { 
      "filter": { 
        "and": [ { 
          "query" : { 
            "query_string" : { 
              "query" : "batman", 
              "default_field" : "all" 
            } 
          } 
        }, { 
          "bool" : { 
            "must" : [ { 
               "term" : { "ni.language" : "en" } 
            }, { 
              "range" : { 
                "_size" : { 
                  "from" : 0, 
                  "to" : 10000, 
                  "include_lower" : true, 
                  "include_upper" : true 
                } 
              } 
            } ] 
          } 
        } ] 
      } 
    } 
  } 
}' 

Then percolate a document (aside: 'ni.content' field in our mapping is a 
default search field): 

curl -XGET 'http://localhost:9200/test_index/testType/_percolate' -d '{ 
    "doc": { 
      "ni": { 
        "content": "So Batman walks into a bar", 
        "language": "en" 
      } 
    } 
}' 

Which results in 

{"ok":true,"matches":["queryNamedSue"]} 

Now if the query is changed to include a _size range, 

curl -XPUT 'http://localhost:9200/_percolator/test_index/queryNamedSue' -d 
'{ 
  "query" : { 
    "constant_score": { 
      "filter": { 
        "and": [ { 
          "query" : { 
            "query_string" : { 
              "query" : "batman", 
              "default_field" : "all" 
            } 
          } 
        }, { 
          "bool" : { 
            "must" : [ { 
               "term" : { "ni.language" : "en" } 
            }, { 
              "range" : { 
                "_size" : { 
                  "from" : 0, 
                  "to" : 10000, 
                  "include_lower" : true, 
                  "include_upper" : true 
                } 
              } 
            } ] 
          } 
        } ] 
      } 
    } 
  } 
}' 

Percolating the same document yields 

{"ok":true,"matches":[]} 

I have researched and found that percolating with a mapping that enables 
and stores _size was failing over a year ago, but this issue was patched:
https://github.com/elasticsearch/elasticsearch/pull/2353. 

We set a default template that for all types in the mapping enables _size 
and sets it to store.  Our percolator node uses the following 
configuration: 

Index Settings: 

index.number_of_shards: variesBasedOnWorkload 
index.number_of_replicas: 0 
index.auto_expand_replicas: "false" 
index.dynamic: "true" 
index.mapper.dynamic: "true" 
index.store.compress.stored: "true" 
index.store.compress.tv: "true" 
index.term_index_divisor: "4" 
index.merge.scheduler.max_thread_count: 1 

Node Settings: 

cache.memory.direct: "false" 
http.enabled: "false" 
gateway.type: "none" 
index.store.type: "memory" 

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elasticsearch+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/f1f339b5-3419-4e91-a962-4875eb7def78%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to