Búsqueda detallada es de

Elasticesearch función básica es la búsqueda, ahora introduce ES API de búsqueda y su uso.

Para ayudar a explicar, aquí preparar algunos datos de prueba, guardar datos en un archivo en website.json:

 

{ "Índice": { "_ índice": "web", "_ id": "1"}}

{ "Dirección": "Distrito Changping de Beijing, Nan Fung Road", "provincia": "Pekín", "ciudad": "Pekín", "distrito": "el distrito de Changping", "localización": "40.150775,116.2841456 "" title ":" bicicleta de Phoenix "" categoría ": [" ir de compras "" monopolio de la bicicleta "]}

{ "Índice": { "_ índice": "web", "_ id": "2"}}

{ "Dirección": "Beijing Distrito Changping", "provincia": "Pekín", "ciudad": "Pekín", "distrito": "Distrito Changping", "localización": "40.109854,116.274349", " title ":" velocidad Paige "" categoría ": [" ir de compras "" otras tiendas "]}

{ "Índice": { "_ índice": "web", "_ id": "3"}}

{ "Dirección": "Beijing Distrito Changping", "provincia": "Pekín", "ciudad": "Pekín", "distrito": "Distrito Changping", "localización": "40.165716,116.270237", " title ":" compartida bicicleta estacionamiento "" categoría ': [' vida útil "" otro servicio de la vida "]}

{ "Índice": { "_ índice": "web", "_ id": "4"}}

{ "Dirección": "Beijing Distrito Changping X030", "provincia": "Pekín", "ciudad": "Pekín", "distrito": "el distrito de Changping", "localización": "40.16806,116.32344", "title": "Changping bicicleta pública estacionamiento", "categoría": [ "vida útil", "otro servicio de la vida"]}

{ "Índice": { "_ índice": "web", "_ id": "5"}}

{ "Dirección": "Distrito de Beijing Changping 100 Arena Road", "provincia": "Pekín", "ciudad": "Pekín", "distrito": "el distrito de Changping", "localización": "40.149193,116.28929 "" title ':' bicicleta compartida estacionamiento "" categoría ': [' vida útil "" otro servicio de la vida "]}

{ "Índice": { "_ índice": "web", "_ id": "6"}}

{ "Dirección": "el distrito de Changping de Beijing Jia beiqi ciudad pueblo blanco No. 200 de Beijing", "provincia": "Pekín", "ciudad": "Pekín", "distrito": "el distrito de Changping", "localización ":" 40.10261,116.38784 "" title ":" logística verde austríaca ventas en tiendas "" categoría ": [" ir de compras "" monopolio de la bicicleta "]}

{ "Índice": { "_ índice": "web", "_ id": "7"}}

{ "Dirección": "Beiqijia Changping Distrito en la ciudad de Baimiao calle 200 Beijing", "provincia": "Pekín", "ciudad": "Pekín", "distrito": "el distrito de Changping," " ubicación ":" 40.1026,116.38751 "" title ":" Los nuevos vehículos eléctricos (Norte-Road) "" categoría ": [" ir de compras "" monopolio de la bicicleta "]}

{ "Índice": { "_ índice": "web", "_ id": "8"}}

{ "Dirección": "Calle 50 Nº 202 m al oeste área de pueblo blanco Beiqijia Changping Town", "provincia": "Pekín", "ciudad": "Pekín", "distrito": " Changping Distrito "" localización ":" 40.102558,116.387483 "" title ":" los vehículos eléctricos urbano viento (Norte-Road) "" categoría ": [" ir de compras "" monopolio de la bicicleta "]}

{ "Índice": { "_ índice": "web", "_ id": "9"}}

{ "Dirección": "Beijing Xiaotangshan cerca de la ciudad de la escuela primaria Ma Fangcun centro Xiaotangshan Xiaotangshan Mafang en el distrito de Changping", "provincia": "Pekín", "ciudad": "Pekín", "distrito": "Changping área "" localización ":" 40.1547354,116.40153086 "" title ":" los vehículos eléctricos Yadi (Ma tienda colmillo) "" categoría ": [" ir de compras "" monopolio de la bicicleta "]}

{ "Índice": { "_ índice": "web", "_ id": "10"}}

{ "Dirección": "el distrito de Changping de Beijing, cerca de la carretera del noreste", "provincia": "Pekín", "ciudad": "Pekín", "distrito": "el distrito de Changping", "localización": "40.134651,116.433778 "" title ":" coche eléctrico Harting "" categoría ": [" ir de compras "" monopolio de la bicicleta "]}

 

Y la creación de un índice conjunto de configuración y mapeo, llamado índice de sitio web designado, el número de copias es 1, el número de rebanada 3, el siguiente comando:

 

{

"configuración": {

"number_of_shards": 3,

"number_of_replicas": 1

},

"asignaciones": {

"propiedades": {

"habla a": {

"teclee el texto"

},

"Categoría": {

"Type": "palabra clave"

},

"Ciudad": {

"Type": "palabra clave"

},

"Distrito": {

"Type": "palabra clave"

},

"ubicación": {

"Type": "geo_point"

},

"provincia": {

"Type": "palabra clave"

},

"Title": {

"teclee el texto"

}

}

}

}

El comando de importación a granel a granel última ejecución para importar documentos en ES:

 

$ Rizo -X POSTAL "localhost: 9200 / _bulk bonita?" -H 'Content-Type: application / json' --Hojas binario @ website.json

1

1. Mecanismo de Búsqueda

1.1 Todos los datos de consulta

GET sitio web / _search

{

"consulta":{

"Match_all": {}

}

}

También se puede escribir como:

 

GET sitio web / _search

1

1.2 especificar un campo de rentabilidad

resultados de cambio de toda la información de campo que contiene el documento por defecto. También se puede especificar para devolver ciertos campos.

 

GET sitio web / _search

{

"_Source": [ "título", "ciudad"],

"consulta":{

"término":{

"City": "Beijing"

}

}

}

ejemplos de Java son como sigue:

 

constructor SearchSourceBuilder = nuevo SearchSourceBuilder ();

// devolver el campo especificado

String [] = {incluye "título", "ciudad"};

// campos excluir devueltos

String [] excluye = {};

builder.fetchSource (incluye, excluye);

Devuelve se especifica el número de la versión 1.3

GET sitio web / _search

{

"Versión": true,

"consulta":{

"término":{

"City": "Beijing"

}

}

}

ejemplos de Java son como sigue:

 

constructor SearchSourceBuilder = nuevo SearchSourceBuilder ();

builder.version (true);

1.4 datos de los componentes de baja frecuencia filtrados

ES proporciona una puntuación mínima de mecanismo de filtrado, puede utilizar las puntuaciones relativamente bajas de estos datos para filtrar.

 

GET sitio web / _search

{

"Min_score": 2,

"consulta":{

"partido":{

"Title": "单车"

}

}

}

ejemplos de Java son como sigue:

 

constructor SearchSourceBuilder = nuevo SearchSourceBuilder ();

builder.minScore (2f);

consulta 1,5 destacado

{

"consulta":{

"partido":{

"Title": "单车"

}

},

"realce":{

"campos":{

"título":{}

}

}

 

ejemplos de Java son como sigue:

 

constructor SearchSourceBuilder = nuevo SearchSourceBuilder ();

MatchQueryBuilder query = QueryBuilders.matchQuery ( "título", "单车");

destacado HighlightBuilder = nuevo HighlightBuilder ();

highlight.field ( "título");

builder.query (consulta);

builder.highlighter (resalte);

2. La consulta de texto

Un alto nivel de búsqueda de texto completo en los campos de texto por lo general utilizados para la búsqueda de texto completo, consultas de texto a entender cómo se indexa el campo de consulta y analizada antes de realizar el separador de palabras para cada campo (o palabra es buscar) usado en la cadena de consulta .

 

2.1 consulta partido

coincidir con la consulta va a resolver la consulta. Se consultará cuerdas después de la palabra tras palabra a una investigación. coincidente pregunta al documento.

 

{

"consulta":{

"partido":{

"Title": "单车"

}

}

}

ejemplos de Java son como sigue:

 

MatchQueryBuilder query = QueryBuilders.matchQuery ( "título", "单车");

2.2 consulta match_phrase

match_phrase consulta consultará el contenido de la primera palabra, pero el documento también se reúnen las dos condiciones siguientes a fin de ser que es:

 

Después de todos los elementos sub-léxica debe aparecer en la cadena.

Los términos en aras de la coherencia en el campo.

{

"consulta":{

"Match_phrase": {

"Título": "Intercambio de bicicletas"

}

}

}

ejemplos de Java son como sigue:

 

MatchPhraseQueryBuilder consulta = QueryBuilders.matchPhraseQuery ( "título", "bicicleta compartida");

 

consulta 2.3 match_phrase_prefix

match_phrase_prefix y match_phrase similar, pero el apoyo match_phrase_prefix prefijo por último plazo:

 

{

"consulta":{

"Match_phrase_prefix": {

"Título": "Compartiendo sencillo"

}

}

}

ejemplos de Java son como sigue:

 

QueryBuilders.matchPhrasePrefixQuery ( "título", "compartir una única");

1

2.4 consulta multi_match

multi_match se actualiza partido para buscar múltiples campos.

 

{

"consulta":{

"Multi_match": {

"Consulta": "北京",

"campos": [ "Título", "dirección"]

}

}

}

multi_match campo Soporte de nombres hasta encontrar el comodín: ejemplos son los siguientes:

 

{

"consulta":{

"Multi_match": {

"Consulta": "北京",

"campos": [ "Título", "* _ dirección"]

}

}

También es compatible con la derecha del campo de búsqueda de la ponderación en el índice de caracteres especificado. Pesos asignados aparece la palabra clave en el título está presente en un peso tres veces el campo de dirección, el mando de la siguiente manera:

 

{

"consulta":{

"Multi_match": {

"Consulta": "北京",

"campos": [ "título ^ 3", "dirección"]

}

}

}

 

ejemplos de Java son como sigue:

 

QueryBuilders.multiMatchQuery ( "北京", "Título", "dirección");

1

2.5 common_terms consulta

common_terms consulta es una palabra integradas alternativas para mejorar los programas de precisión búsqueda y el índice de repetición sin sacrificar el rendimiento.

 

2.5.1 problema

Cada término en la consulta ha costado. Buscar "El zorro marrón" consulta requiere tres términos, cada consulta de un "el", "marrón" y "zorro" Todas las consultas se realizan para todos los documentos en el índice. Consulta "los" posibles coincidencias y muchos documentos, por lo que el impacto sobre la correlación es mucho más pequeño que los otros dos términos.

 

Anteriormente, la solución a este problema es hacer caso omiso de los términos de alta frecuencia. Al ser "la" tratados como palabras vacías, reducimos el tamaño del índice y reducir el número de términos de la consulta que debe ejecutarse.

 

El problema con este enfoque es que, aunque el impacto de las palabras vacías de correlación es muy pequeño, pero todavía son importantes. Si eliminamos las palabras vacías, vamos a perder precisión, no podemos distinguir entre "feliz" y "no es feliz", "La La" o "Ser o no ser" ya no existe en el índice, búsqueda se reducirá la tasa de precisión y la recuperación.

 

2.5.2 Solución

common_terms consulta mejorar una solución, después de lo cual la palabra de consulta elementos léxicos en un importante elementos léxicos (baja frecuencia de términos) y artículos léxicos poco importantes (palabras de alta frecuencia, es decir, antes de las palabras de parada). Cuando la búsqueda, en primer término de búsqueda de coincidencias y documentos importantes, estos documentos es un término y aparece un término menos influenciado documento de su puntuación. A continuación, ejecutar la segunda consulta, más pequeño efecto término de búsqueda en las clasificaciones de palabras de alta frecuencia, pero sin contar las puntuaciones de todos los documentos, pero sólo cuenta la primera consulta se ha adaptado a la puntuación de documentos. Si la primera consulta contiene sólo palabras de alta frecuencia, que será una ejecución separada por consulta y conectores, en otras palabras, buscará todos los elementos léxicos.

 

Es una palabra de alta frecuencia elementos léxicos o bajo palabra se establece en un valor umbral por cutoff_frequency.

 

Tal vez la característica más interesante de consulta es que se adapta automáticamente a las palabras vacías de dominio específico. Por ejemplo, en un sitio de alojamiento de vídeo, términos comunes como el clip o de vídeo se detendrá automáticamente el rendimiento de palabra sin la necesidad de mantener una lista manualmente.

 

2.5.3 Ejemplo

Por ejemplo, la frecuencia de documento de un término será de más de 0,1% como las palabras de alta frecuencia, frecuencia de la palabra puede ser conectado directamente a low_freq_operator, parámetros high_freq_operator. Prepare el operador palabras de baja frecuencia es "y" todas las palabras de baja frecuencia se deben buscar.

 

{

"consulta":{

"común":{

"cuerpo":{

"Consulta": "Nelly el elefante como una caricatura",

"Cutoff_frequency": 0.001,

"Low_freq_opterator": "y"

}

}

}

}

 

La operación anteriormente descrita será equivalente a:

 

{

"consulta":{

"Bool": {

"debe":[

{ "Término": { "cuerpo": "Helly"}},

{ "Término": { "cuerpo": "elefante"}},

{ "Término": { "cuerpo": "dibujos animados"}}

],

"debería":[

{ "Término": { "cuerpo": "la"}},

{ "Término": { "cuerpo": "como"}},

{ "Término": { "cuerpo": "a"}}

]

}

}

}

ejemplos de Java son como sigue:

 

QueryBuilders.commonTermsQuery ( "cuerpo", "Nelly el elefante como una caricatura") cutoffFrequency (0.001f) .lowFreqOperator (Operator.AND).;

consulta 2.6 query_string

consulta query_string se combina con Lucene sintaxis de consulta muy cerca de una consulta, lo que permite el uso de una serie de condiciones especiales en una consulta en la consulta (por ejemplo: Y | O | NO) múltiples campos consultas, sugerencias familiarizados con la sintaxis de consulta de Lucene los usuarios utilizar.

 

ejemplos de Java son como sigue:

 

. QueryBuilders.queryStringQuery ( "大 数据") .field ( "título") defaultOperator (Operator.AND);

1

3. Los términos de la consulta

Antes de la aplicación de búsqueda de texto completo consulta cadena de consulta de análisis, para un índice de términos invertida almacenada en los términos precisos en la operación de búsqueda. Un término general utilizado para datos estructurados a nivel de consulta, tales como números, fechas y tipos enumerados.

 

3.1 consulta plazo

consulta plazo para coincidencias exactas de una palabra.

 

{

"consulta":{

"término":{

"City": "Beijing"

}

}

}

ejemplos de Java son como sigue:

 

QueryBuilders.termQuery ( "ciudad", "北京市");

1

3.2 términos de la consulta

términos de la consulta está actualizando consulta TREM, la consulta se puede utilizar para documentar el documento contiene más palabras. Para encontrar tal un campo documento ciudad contiene la palabra clave "Pekín" o "Tianjin" de

 

{

"consulta":{

"condiciones":{

"City": [ "Pekín", "Tianjin"]

}

}

}

ejemplos de Java son como sigue:

 

QueryBuilders.termsQuery ( "ciudad", "Beijing", "Tianjin");

1

3.3 consulta gama

gama de documentos de coincidencia de consultas en un cierto rango numérico, la fecha o el campo Cadena. Use consultas de rango sólo pueden comprobar un campo, no pueden actuar en múltiples campos. parámetros de consulta gama soportados son los siguientes:

 

GT: mayor de

GTE: mayor o igual

lt: menos de

lte: menor o igual

Comprueba los precios por ejemplo 20 <precios <= 80 datos:

 

{

"consulta":{

"rango":{

"precio":{

"GT": 20,

"LTE": 80

}

}

}

}

Consultas datan 2020-01-01 - 08.01.2020 datos:

 

{

"consulta":{

"rango":{

"Índice": {

"GET": "01/01/2020",

"LTE": "01/08/2020",

"Formato": "aaaa-MM-dd"

}

}

}

}

ejemplos de Java son como sigue:

 

. QueryBuilders.rangeQuery ( "precio") gt (20) .lte (80);

1

3.4 Existe consulta

existe campos consulta devuelve tienen al menos un valor no nulo del documento.

 

{

"consulta":{

"Existe": {

"Campo": "ciudad"

}

}

}

3

ejemplos de Java son como sigue:

 

QueryBuilders.existsQuery ( "ciudad");

1

3.5 prefijo de consulta

prefijo de consulta para consultar el documento en un campo de prefijo dado empezaron.

 

{

"consulta":{

"prefijo":{

"Ciudad": "北京"

}

}

}

ejemplos de Java son como sigue:

 

QueryBuilders.prefixQuery ( "ciudad", "北京");

1

3.6 consulta comodín

traducido al chino comodín consulta comodín consultas, el apoyo a un solo carácter comodín (?, que se utiliza para que coincida con cualquier carácter uno) y el carácter comodín múltiple (*, que se utiliza para que coincida con cero o más caracteres).

 

{

"consulta":{

"comodín":{

"Ciudad": "? 北 市"

}

}

}

ejemplos de Java son como sigue:

 

QueryBuilders.wildcardQuery ( "ciudad", "北 市?");

1

3.7 consulta de expresiones regulares

ES también soporta expresiones regulares consulta, puede consultar el campo especificado en los documentos de consulta de expresiones regulares que contienen la coincidencia de expresión regular especificada. Puede representar cualquier carácter, "as" y "ab ..." se hacen coincidir con "ABCDE", un {3} b {3}, {2,3} un b {2,4}, un {2,} {2, } de cadena se corresponde con "aaabbb".

 

Por ejemplo, es necesario que coincida comienza con W seguido por un código postal dígito, utilizar expresiones regulares para consulta estructura de consulta es la siguiente:

 

{

"consulta":{

"Expresión regular": {

"Código postal": "W [0-9] +."

}

}

}

ejemplos de Java son como sigue:

 

QueryBuilders.regexpQuery ( "código postal", "W [0-9] +.");

"comodín":{

"Ciudad": "? 北 市"

}

}

}

ejemplos de Java son como sigue:

 

QueryBuilders.wildcardQuery ( "ciudad", "北 市?");

Artículo de: https://blog.csdn.net/dwjf321/article/details/103904001

 

Publicados 277 artículos originales · ganado elogios 65 · vistas 380 000 +

Supongo que te gusta

Origin blog.csdn.net/ailiandeziwei/article/details/104691900
Recomendado
Clasificación