query java search lucene token elasticsearch

java - query - elasticsearch wildcard search



elasticsearch-Devuelve las fichas de un campo (2)

Si te refieres a los tokens que se han indexado, puedes hacer una faceta de términos en el campo del mensaje. Aumente el valor del size para recuperar más entradas, o establezca en 0 para obtener todos los términos.

Lucene proporciona la capacidad de almacenar el término vectores, pero hasta ahora no hay manera de tener acceso a él con elasticsearch (que yo sepa).

¿Por qué necesitas eso? Si solo quiere comprobar lo que está indexando, puede echar un vistazo a la API de análisis .

¿Cómo puedo tener los tokens de un campo particular devueltos en el resultado?

Por ejemplo, una solicitud GET

curl -XGET ''http://localhost:9200/twitter/tweet/1''

devoluciones

{ "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_source" : { "user" : "kimchy", "postDate" : "2009-11-15T14:12:12", "message" : "trying out Elastic Search" } }

Me gustaría tener los tokens del campo ''_source.message'' incluidos en el resultado


También hay otra forma de hacerlo usando el siguiente script script_fields:

curl ''http://localhost:9200/test-idx/_search?pretty=true'' -d ''{ "query" : { "match_all" : { } }, "script_fields": { "terms" : { "script": "doc[field].values", "params": { "field": "message" } } } }''

Es importante tener en cuenta que si bien esta secuencia de comandos devuelve los términos reales que se indexaron, también almacena en caché todos los valores de campo y en los índices grandes se puede usar mucha memoria. Por lo tanto, en índices grandes, podría ser más útil recuperar los valores de campo de los campos almacenados o la fuente y repetirlos de nuevo sobre la marcha utilizando el siguiente script MVEL:

import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import java.io.StringReader; // Cache analyzer for further use cachedAnalyzer=(isdef cachedAnalyzer)?cachedAnalyzer:doc.mapperService().documentMapper(doc._type.value).mappers().indexAnalyzer(); terms=[]; // Get value from Fields Lookup //val=_fields[field].values; // Get value from Source Lookup val=_source[field]; if(val != null) { tokenStream=cachedAnalyzer.tokenStream(field, new StringReader(val)); CharTermAttribute termAttribute = tokenStream.addAttribute(CharTermAttribute); while(tokenStream.incrementToken()) { terms.add(termAttribute.toString()) }; tokenStream.close(); } terms

Este script MVEL puede almacenarse como config/scripts/analyze.mvel y usarse con la siguiente consulta:

curl ''http://localhost:9200/test-idx/_search?pretty=true'' -d ''{ "query" : { "match_all" : { } }, "script_fields": { "terms" : { "script": "analyze", "params": { "field": "message" } } } }''