es de consulta avançada

1. consultas complexas

consulta Composite é reunir os requisitos de consulta algumas consultas simples mais complexas, além de consultas complexas também pode controlar o comportamento de outra consulta.

 

1.1 constant_score

consulta constant_score podem ser outros tipos de embalagem de uma consulta e retorno às condições de consulta que correspondem ao filtro com a mesma pontuação no documento. Quando não estamos preocupados com o impacto sobre a freqüência de termos de pesquisa classificou os resultados de pesquisa, você pode usar constant_score o filtro de consulta consulta ou filtro declarações embalados.

 

Exemplos são como se segue:

 

{

"inquerir":{

"Constant_score": {

"filtro":{

"prazo":{

"City": "Beijing"

}

}

}

}

}

exemplos Java são como se segue:

 

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

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

 

consulta 1,2 boleano

consulta bool pode ser qualquer número de consultas simples em conjunto, o uso deve, deve, must_not, opções de filtro representam conexões lógicas entre consultas simples, cada opção pode aparecer em qualquer lugar de zero a muitas vezes os seus significados são:

 

deve: documento deve corresponder a consulta no bloco fase opção deve nos operadores lógicos AND.

deve: documento coincide com a condição de consulta Se a opção não pode coincidir com a fase do bloco para uma operação OR lógica.

must_not: Pelo contrário, o documento que correspondam as condições de consulta da opção não serão devolvidos e obrigação.

Filtro: o mesmo e deve coincidir com as condições da consulta no documento opções de filtro será devolvido, mas o filtro não marcar, basta jogar filtragem.

Exemplos são como se segue:

 

{

"inquerir":{

"Bool": {

"devo":[

{

"Combine":{

"Title": "Bicicleta Sharing"

}

},

{

"prazo":{

"Distrito": "Changping District"

}

}

],

"devemos":[

{

"Combine":{

"Endereço": "Chaoyang District"

}

}

]

}

}

}

 

1.3 consulta dis_max

dis_max consulta ter algum contato com consulta bool também têm algumas diferenças, apoio consulta dis_max várias consultas simultâneas pode retornar qualquer tipo de documento e consulta de correspondência cláusula. Bool consulta pode ser diferente com todas as pontuações correspondem à consulta de uma combinação de, consulta dis_max usando apenas a melhor pontuação da consulta.

 

{

"inquerir":{

"Dis_max": {

"Tie_breaker": 0,7,

"Impulso": 1,2,

"consultas": [

{

"Match": { "endereço": "Beijing Chaoyang District"}

},

{

"Combine":{

"Title": "Beijing Chaoyang District."

}

}

]

}

}

}

consulta 1,4 function_score

consulta function_score pode modificar a pontuação consulta de documentos, a consulta é muito útil em alguns casos, tais como o documento é calculado pela função de pontuação marcar custos mais elevados, você pode usar filtros mais personalizado forma função de pontuação para substituir o método de pontuação tradicional.

 

Use consulta function_score, o usuário precisa definir uma consulta e uma função de pontuação função de pontuação múltipla irá consultar para calcular a pontuação de cada documento separadamente.

 

{

"inquerir": {

"Function_score": {

"inquerir": {

"Function_score": {

"inquerir": {

"Combine": {

"Title": "java 编程"

}

},

"funções": [

{

"Field_value_factor": {

"Campo": "preço",

"Factor": 0,1,

"Modificador": "ln1p"

}

}

],

"Score_mode": "multiplicar",

"Max_boost": 10,

"Boost": 1

}

},

"funções": [],

"Score_mode": "multiplicar",

"Boost_mode": "sum",

"Max_boost": 10,

"Boost": 1

}

}

}

exemplos Java são como se segue:

 

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

FieldValueFactorFunctionBuilder fator = ScoreFunctionBuilders.fieldValueFactorFunction ( "Preço") modificador (FieldValueFactorFunction.Modifier.LN1P) .factor (0.1f).;

FunctionScoreQueryBuilder.FilterFunctionBuilder [] = {filterFunctionBuilders

nova FunctionScoreQueryBuilder.FilterFunctionBuilder (fator)

};

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

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

1

2

3

4

5

6

7

função de pontuação detalhado

 

1.5 consulta impulsionar

aumentando a necessidade de dois cenários de consulta para ajustar consulta pontuação, aumentando a consulta diminuirá e empacotados juntos duas consultas um da pontuação consulta.

 

consulta impulsionar inclui positivo, negativo e negative_boost três partes, pontuação positiva consulta permaneceram inalterados, consultas negativos irão reduzir o marcador documento, indicam negative_boost pesos negativos na diminuição.

 

título Java consulta para o livro, publicado em 2018 no tempo na parte de trás.

 

{

"inquerir":{

"Impulsionar": {

"positivo":{

"Combine":{

"Title": "java"

}

},

"negativo":{

"alcance":{

"PublishAt": {

"LTE": "2018/01/01"

}

}

"Negative_boost": 0,2

}

}

}

13

exemplos Java são como se segue:

 

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

RangeQueryBuilder publishAt = QueryBuilders.rangeQuery ( "publishAt") LTE ( "2018/01/01").;

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

2. consulta aninhada

2.1 Sons inquérito

Aqui para lojas e commodities, por exemplo, eles pertencem a diferentes tipos, o equivalente a duas tabelas no banco de dados, se você deseja executar a loja e mercadoria associado você precisa dizer a um relacionamento pai-filho entre o documento ES, especificar um campo aqui store2product para manter este relacionamento, o tipo de campo para se juntar, e especificar seu relacionamento.

 

2.1.1 Criar um índice de relacionamento entre pais e filhos

loja PUT

{

"mapeamentos": {

"propriedades": {

"Nome": {

"Type": "texto",

"Analisador": "ik_max_word",

"Search_analyzer": "ik_smart"

},

"Store2product": {

"Type": "join",

"relações": {

"Storeid": "ProductID"

}

}

}

}

}

 

2.2.2 Adição de documentos de relações

Adicione o documento pai (lojas), e especificar o campo pai

 

loja PUT / 1

{

"Nome": "Real comida recorde da franquia shop"

"Store2product": "storeid"

}

Adicionar um documento filho (commodities), e exigir que o documento filho e documento pai na mesma fatia, você precisa especificar o pai id rota id

 

loja PUT / 2? = 1 encaminhamento

{

"Nome": "criar um verdadeiro sabor de cranberry instantânea suco de ameixa em pó fabricado em chá, suco de bebidas 1000g ameixa azeda raw"

"Store2product": {

"Nome": "ProductID",

"Pai": "1"

}

}

2.2.3 mercadoria consulta na loja

Use consulta has_parent, e especificar PARENT_TYPE como storeid

 

GET loja / _search

{

"inquerir": {

"Has_parent": {

"PARENT_TYPE": "storeid",

"inquerir": {

"Combine": {

"nome": "lojas de comida"

}

}

}

}

}

exemplos Java são como se segue:

 

MatchQueryBuilder NameQuery = QueryBuilders.matchQuery ( "name", "Lojas de alimentos");

HasParentQueryBuilder hasParentQueryBuilder = new HasParentQueryBuilder ( "storeid", NameQuery, true);

2.2.4 Consultas pertencem a qual loja de produtos

Use consulta has_child e especifique um productid tipo de campo

 

GET loja / _search

{

"inquerir": {

"Has_child": {

"Type": "ProductID",

"inquerir": {

"Combine": {

"Nome": "sabor ameixa azeda"

}

}

}

}

}

exemplos Java são como se segue:

 

MatchQueryBuilder NameQuery = QueryBuilders.matchQuery ( "name", "sabor suco de ameixa");

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

 

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

Publicado 277 artigos originais · Louvor obteve 65 · vista 380 000 +

Acho que você gosta

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