es de consulta avanzada

1. consultas complejas

de consulta compuesta es reunir los requisitos de consulta algunas consultas simples más complejas, además de consultas complejas también puede controlar el comportamiento de otra consulta.

 

1.1 constant_score

constant_score consulta puede haber otros tipos de envasado de una consulta y devuelve las condiciones de consulta que coinciden con el filtro con el mismo marcador en el documento. Cuando no están preocupados por el impacto en la frecuencia de los términos de búsqueda clasificado los resultados de búsqueda, puede utilizar constant_score las declaraciones del filtro de consulta consulta o filtro envasados.

 

Ejemplos son los siguientes:

 

{

"consulta":{

"Constant_score": {

"filtrar":{

"término":{

"City": "Beijing"

}

}

}

}

}

ejemplos de Java son como sigue:

 

MatchQueryBuilder query = QueryBuilders.matchQuery ( "título", "新闻") .minimumShouldMatch ( "90%");

QueryBuilders.constantScoreQuery (consulta) .boost (3.0f);

 

consulta 1.2 bool

bool consulta puede ser cualquier número de consultas sencillas juntos, el uso debe, si, must_not, opciones de filtro representar conexiones lógicas entre las consultas simples, cada opción puede aparecer en cualquier parte de cero a muchas veces sus significados son:

 

debe: documento debe coincidir con la consulta en el bloque de fase opción debe en los operadores lógicos AND.

debe: documento coincide con la condición de consulta En caso de que la opción puede no coincidir con la fase del bloque a una operación OR lógica.

must_not: Por el contrario, el documento que coincida con las condiciones de la consulta de la opción no será devuelto y el mosto.

filtro: la misma y debe coincidir con las condiciones de la consulta en el documento de opciones de filtro serán devueltos, pero el filtro no anota, sólo jugar el filtrado.

Ejemplos son los siguientes:

 

{

"consulta":{

"Bool": {

"debe":[

{

"partido":{

"Título": "Intercambio de bicicletas"

}

},

{

"término":{

"Distrito": "Distrito Changping"

}

}

],

"debería":[

{

"partido":{

"Dirección": "Distrito de Chaoyang"

}

}

]

}

}

}

 

1.3 consulta dis_max

dis_max consulta tener algún contacto con la consulta bool también tienen algunas diferencias, de apoyo a la consulta dis_max múltiples consultas simultáneas pueden devolver cualquier tipo de documento y la consulta de concordancia cláusula. Bool consulta puede ser diferente con todas las calificaciones coinciden con la consulta de una combinación de, consulta dis_max utilizando sólo el mejor resultado de la consulta.

 

{

"consulta":{

"Dis_max": {

"Tie_breaker": 0,7,

"Impulso": 1.2,

"consultas": [

{

"Match": { "dirección": "Beijing Chaoyang District"}

},

{

"partido":{

"Título": "Beijing Chaoyang District."

}

}

]

}

}

}

consulta 1.4 function_score

function_score consulta puede modificar la puntuación de consulta de documentos, la consulta es muy útil en algunos casos, como en el documento se calcula mediante la función de puntuación puntuación mayores costos, puede utilizar filtros más personalizada manera función de puntuación para reemplazar el método tradicional de puntuación.

 

Uso consulta function_score, el usuario tiene que definir una consulta y una función de puntuación función de puntuación múltiples consultará para calcular la puntuación de cada documento por separado.

 

{

"consulta": {

"Function_score": {

"consulta": {

"Function_score": {

"consulta": {

"partido": {

"Title": "Java 编程"

}

},

"funciones": [

{

"Field_value_factor": {

"Campo": "precio",

"Factor": 0,1,

"Modificador": "ln1p"

}

}

],

"Score_mode": "multiplican",

"Max_boost": 10,

"Impulso": 1

}

},

"funciones": [],

"Score_mode": "multiplican",

"Boost_mode": "suma",

"Max_boost": 10,

"Impulso": 1

}

}

}

ejemplos de Java son como sigue:

 

MatchPhraseQueryBuilder titleQuery = QueryBuilders.matchPhraseQuery ( "título", "Java 编程");

factor de FieldValueFactorFunctionBuilder = ScoreFunctionBuilders.fieldValueFactorFunction ( "precio") modificador (FieldValueFactorFunction.Modifier.LN1P) .FACTOR (0.1f).;

FunctionScoreQueryBuilder.FilterFunctionBuilder [] = {filterFunctionBuilders

nuevo FunctionScoreQueryBuilder.FilterFunctionBuilder (factor)

};

FunctionScoreQueryBuilder functionScoreQuery = QueryBuilders.functionScoreQuery (titleQuery, filterFunctionBuilders);

FunctionScoreQueryBuilder query = QueryBuilders.functionScoreQuery (functionScoreQuery) .boostMode (CombineFunction.SUM);

1

2

3

4

5

6

7

función detallada de puntuación

 

1.5 impulsar consulta

impulsar la necesidad de dos escenarios de consulta para el ajuste de consulta puntuación, impulsar la consulta disminuirá y empaquetados juntos dos consultas uno de la puntuación consulta.

 

consulta impulsar incluye positivo, negativo y negative_boost tres partes, la puntuación de consulta positiva se mantuvo sin cambios, consultas negativo en el marcador en el documento, negative_boost indican pesos negativos en el descenso.

 

título de Java consulta para el libro, publicado en 2018 en el momento en la parte posterior.

 

{

"consulta":{

"Impulsar": {

"positivo":{

"partido":{

"Title": "java"

}

},

"negativo":{

"rango":{

"PublishAt": {

"LTE": "01/01/2018"

}

}

"Negative_boost": 0,2

}

}

}

13

ejemplos de Java son como sigue:

 

MatchPhraseQueryBuilder titleQuery = QueryBuilders.matchPhraseQuery ( "título", "java");

RangeQueryBuilder publishAt = QueryBuilders.rangeQuery ( "publishAt") LTE ( "01.01.2018.");

QueryBuilders.boostingQuery (titleQuery, publishAt) .negativeBoost (0.2f);

2. consulta anidada

2.1 consulta Sons

A continuación de la zona comercial, por ejemplo, pertenecen a diferentes tipos, el equivalente a dos tablas en la base de datos, si desea ejecutar la tienda y mercancía asociado tiene que decirle a una relación padre-hijo entre el documento ES, especificar un campo aquí store2product para mantener esta relación, el tipo del campo para unirse, y especificar su relación.

 

2.1.1 Crear un índice de relación padre-hijo

Ir a trabajar

{

"asignaciones": {

"propiedades": {

"nombre": {

"teclee el texto",

"Analizador": "ik_max_word",

"Search_analyzer": "ik_smart"

},

"Store2product": {

"Type": "unir",

"relaciones": {

"StoreID": "ProductID"

}

}

}

}

}

 

2.2.2 Adición de documentos de relaciones

Añadir el documento principal (tiendas), y especificar el campo de los padres

 

tienda de PUT / 1

{

"Nombre": "El alimento verdadero récord de la franquicia tienda"

"Store2product": "StoreID"

}

Añadir un documento niño (materias primas), y requieren el documento de niños y documento de nivel superior en el mismo corte, es necesario especificar la ruta ID de padre Identificación

 

tienda PUT / 2? enrutamiento = 1

{

"Nombre": "crear un verdadero sabor del arándano jugo de ciruela en polvo instantánea hecho en el té, las bebidas de jugo de ciruela agria 1000g prima"

"Store2product": {

"Name": "ProductID",

"Padre": "1"

}

}

2.2.3 Consulta de mercancía en la tienda

Utilice consulta Has_Parent, y especificar PARENT_TYPE como StoreID

 

GET tienda / _search

{

"consulta": {

"Has_Parent": {

"PARENT_TYPE": "StoreID",

"consulta": {

"partido": {

"name": "tiendas de alimentos"

}

}

}

}

}

ejemplos de Java son como sigue:

 

MatchQueryBuilder NameQuery = QueryBuilders.matchQuery ( "nombre", "tiendas de alimentos");

HasParentQueryBuilder hasParentQueryBuilder = nuevo HasParentQueryBuilder ( "StoreID", NameQuery, true);

2.2.4 Consultas pertenecen a qué tienda de artículos

Utilice consulta has_child, y especificar un campo de tipo idproducto

 

GET tienda / _search

{

"consulta": {

"Has_child": {

"Type": "ProductID",

"consulta": {

"partido": {

"Nombre": "el sabor amargo del ciruelo"

}

}

}

}

}

ejemplos de Java son como sigue:

 

MatchQueryBuilder NameQuery = QueryBuilders.matchQuery ( "nombre", "sabor a jugo de ciruela");

HasChildQueryBuilder hasChildQueryBuilder = nuevo HasChildQueryBuilder ( "ProductID", NameQuery, ScoreMode.None);

 

Fuente: https://blog.csdn.net/dwjf321/article/details/103934964

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

Supongo que te gusta

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