support query not multi does cutoff_frequency consultas elasticsearch range-query

elasticsearch - not - query dsl kibana



Consulta de rango con elasticsearch para string (2)

Estoy intentando utilizar la consulta de rango con elasticsearch

{ "query": { "range": { "order_no": { "gte": "VM-0001", "lte": "VM-0005" } } } }

Pero el retorno elástico no tiene resultado. Encontré que el sistema tiene un problema con la cadena include - o _

Este es un mapeo de ese campo:

"order_no" : { "type" : "string", "index_analyzer" : "str_index_analyzer", "search_analyzer" : "str_search_analyzer" }

{ "analysis": { "analyzer": { "str_search_analyzer": { "tokenizer": "keyword", "filter": [ "lowercase" ] }, "str_index_analyzer": { "tokenizer": "keyword", "filter": [ "lowercase", "substring" ] } }, "filter": { "substring": { "type": "nGram", "min_gram": 1, "max_gram": 20 } } } }


Según la documentación , en el caso de string campos de string , Elasticsearch utiliza un TermRangeQuery que, por lo que yo sé, no analiza el término para buscar. Esto significa que su rango VM-0001 - VM-0005 busca exactamente estos términos. Mientras que tiene en su índice algo así como vm-0001 (minúscula). Entonces, cualquiera de los siguientes:

{ "query": { "range": { "order_no": { "gte": "vm-0001", "lte": "vm-0005" } } } }

o agregue otro campo en su índice donde conserve el order_no como palabra clave sin ninguna minúscula o nGram-atization.


{ "query": { "range": { "order_no": { "gte": "vm-0001", "lte": "vm-0005" } } } }