ElasticSearch возвращает не все результаты

#rest #search #elasticsearch

#rest #Поиск #elasticsearch

Вопрос:

У меня есть этот набор данных

 {
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 16,
    "max_score" : 1.0,
    "hits" : [ {
      "_index" : "tenant1",
      "_type" : "consultation",
      "_id" : "100038",
      "_score" : 1.0, "_source" : {"id":"100038","patientPin":"2012010000000020","prescriptions":[],"diagnosis":["Amoebiasis"],"patientFirstName":"Scooby","patientLastName":"Doo","documentDate":"06/13/2014"}
    }, {
      "_index" : "tenant1",
      "_type" : "consultation",
      "_id" : "100007",
      "_score" : 1.0, "_source" : {"id":"100007","patientPin":"2012010000000016","prescriptions":["METHISOPRINOL ISOPRINOSINE"],"diagnosis":["Alcohol Intoxication"],"patientFirstName":"Johnny","patientLastName":"Bravo","documentDate":"06/10/2014"}
    }, {
      "_index" : "tenant1",
      "_type" : "consultation",
      "_id" : "100015",
      "_score" : 1.0, "_source" : {"id":"100015","patientPin":"2012010000000010","prescriptions":[],"diagnosis":["Amoebiasis"],"patientFirstName":"Tweety","patientLastName":"Bird","documentDate":"06/10/2014"}
    }, {
      "_index" : "tenant1",
      "_type" : "consultation",
      "_id" : "100027",
      "_score" : 1.0, "_source" : {"id":"100027","patientPin":"2012010000000014","prescriptions":[],"diagnosis":["Food Poisoning"],"patientFirstName":"Marvin","patientLastName":"Martian","documentDate":"06/11/2014"}
    }, {
      "_index" : "tenant1",
      "_type" : "consultation",
      "_id" : "100046",
      "_score" : 1.0, "_source" : {"id":"100046","patientPin":"2012010000000027","prescriptions":[],"diagnosis":["Amoebiasis"],"patientFirstName":"Yabba","patientLastName":"Doo","documentDate":"06/13/2014"}
    }, {
      "_index" : "tenant1",
      "_type" : "consultation",
      "_id" : "100058",
      "_score" : 1.0, "_source" : {"id":"100058","patientPin":"2012010000000003","prescriptions":[],"diagnosis":["Amoebiasis"],"patientFirstName":"Elmer","patientLastName":"Fudd","documentDate":"06/13/2014"}
    }, {
      "_index" : "tenant1",
      "_type" : "consultation",
      "_id" : "100042",
      "_score" : 1.0, "_source" : {"id":"100042","patientPin":"2012010000000021","prescriptions":[],"diagnosis":["Amoebiasis"],"patientFirstName":"Scrappy","patientLastName":"Doo","documentDate":"06/13/2014"}
    }, {
      "_index" : "tenant1",
      "_type" : "consultation",
      "_id" : "100054",
      "_score" : 1.0, "_source" : {"id":"100054","patientPin":"2012010000000026","prescriptions":[],"diagnosis":["Amoebiasis"],"patientFirstName":"Scooby","patientLastName":"Dum","documentDate":"06/13/2014"}
    }, {
      "_index" : "tenant1",
      "_type" : "consultation",
      "_id" : "100066",
      "_score" : 1.0, "_source" : {"id":"100066","patientPin":"2012010000000015","prescriptions":[],"diagnosis":["Amoebiasis"],"patientFirstName":"Hippety","patientLastName":"Hopper","documentDate":"06/13/2014"}
    }, {
      "_index" : "tenant1",
      "_type" : "consultation",
      "_id" : "100050",
      "_score" : 1.0, "_source" : {"id":"100050","patientPin":"2012010000000002","prescriptions":[],"diagnosis":["Amoebiasis"],"patientFirstName":"Daffy","patientLastName":"Duck","documentDate":"06/13/2014"}
    } ]
  }
}
 

Однако, когда я запрашиваю через консоль Rest Google Chromes с этим запросом

 {
    "query" : {
        "match" : {
            "patientFirstName" : "Scooby"
        }
    }
}
 

Он возвращает весь результат вот URL, который я использую для поиска

 http://localhost:9200/tenant1/consultation/_search
 

Я также даже сделал

 http://localhost:9200/tenant1/consultation/_search?patientLastName:Doo
 

и он по-прежнему возвращает все результаты. Он должен возвращать только один результат

Комментарии:

1. Похоже, что есть два «Scooby», поэтому запрос должен возвращать два результата.

Ответ №1:

Измените свой запрос на это.(добавить _search?q=)

 http://localhost:9200/tenant1/consultation/_search?q=patientLastName:Doo
 

Ответ №2:

Попробуйте выполнить запрос bool, это гарантирует, что он вернет его в качестве результата —

 {
    "query": {
        "bool": {
            "must": {
                "term": {
                    "patientFirstName": "Scooby"
                }
            }
        }
    }
}
 

Дополнительная информация здесь.