Запрос по Elasti c Поиск по нескольким критериям - PullRequest
1 голос
/ 26 февраля 2020

У меня есть этот документ в elasti c search

 {
        "_index" : "master",
        "_type" : "_doc",
        "_id" : "q9IGdXABeXa7ITflapkV",
        "_score" : 0.0,
        "_source" : {
          "customer_acct" : "64876457056",
          "ssn_number" : "123456789",
          "name" : "Julie",
          "city" : "NY"


        }

Я хотел запросить главный индекс с помощью customer_acct и ssn_number для получения всего документа. Я хотел отключить оценку и релевантность, я использовал приведенный ниже запрос

 curl -X GET "localhost/master/_search/?pretty" -H 'Content-Type: application/json' -d'
    {
      "query": {
            "term": {
            "customer_acct":  {
             "value":"64876457056"
             }
            } 

          }


    }' 

Мне нужно также включить в критерий запроса второй критерий - ssn_number, как мне это сделать? , Я хочу отключить оценку и релевантность, если это возможно, я новичок в Elasti c Поиск и как бы я соответствовал второму критерию на ssn_number в приведенном выше запросе, который я пробовал?

1 Ответ

0 голосов
/ 26 февраля 2020

Во-первых, вам нужно определить правильное отображение вашего индекса. Ваши customer_acct и ssn_number имеют числовой тип c, но вы сохраняете их как строку. Также, глядя на ваш образец, я вижу, что вы должны использовать long для их хранения. и тогда вы можете просто использовать контекст фильтра в своем запросе, так как вам не нужны оценка и релевантность в вашем результате. Подробнее о контексте фильтра читайте в официальном ES do c, а также в приведенном ниже фрагменте ссылки.

В контексте фильтра предложение запроса отвечает на вопрос «Делает ли это документ соответствует этому условию запроса? » Ответ прост: да или нет - баллы не рассчитываются. Контекст фильтра в основном используется для фильтрации структурированных данных,

, что в точности соответствует вашему варианту использования.

1. Отображение индекса

{
    "mappings": {
        "properties": {
            "customer_acct": {
                "type": "long"
            },
            "ssn_number" :{
                "type": "long"
            },
            "name" : {
                "type": "text"
            },
            "city" :{
                "type": "text"
            }
        }
    }
}

2. Индекс образца документов

{
    "name": "Smithe John",
    "city": "SF",
    "customer_acct": 64876457065,
    "ssn_number": 123456790
}
{
    "name": "Julie",
    "city": "NY",
    "customer_acct": 64876457056,
    "ssn_number": 123456789
}

3. Основной поисковый запрос для фильтрации без оценки

{
    "query": {
        "bool": {
            "filter": [ --> only filter clause
                {
                    "term": {
                        "customer_acct": 64876457056
                    }
                },
                {
                    "term": {
                        "ssn_number": 123456789
                    }
                }
            ]
        }
    }
}

Приведенный выше поисковый запрос дает следующий результат:

{
    "took": 186,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 0.0,
        "hits": [
            {
                "_index": "so-master",
                "_type": "_doc",
                "_id": "1",
                "_score": 0.0, --> notice score is 0.
                "_source": {
                    "name": "Smithe John",
                    "city": "SF",
                    "customer_acct": 64876457056,
                    "ssn_number": 123456789
                }
            }
        ]
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...