【问题标题】:Elastic search always return no result弹性搜索总是不返回结果
【发布时间】:2017-10-07 01:42:49
【问题描述】:

我正在尝试使用以下说明测试弹性搜索:

http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-gsg.html

当我尝试上述方法并上传说明中的以下文本时:

{
   "index": {
    "_index": "movies",
    "_type": "listings",
    "_id": "2"
}
 } {
"director": "Frankenheimer, John",
"genre": ["Drama", "Mystery", "Thriller"],
"year": 1962,
"actor": ["Lansbury, Angela", "Sinatra, Frank", "Leigh, Janet", "Harvey, Laurence", "Silva, Henry", "Frees, Paul", "Gregory, James", "Bissell, Whit", "McGiver, John", "Parrish, Leslie", "Edwards, James", "Flowers, Bess", "Dhiegh, Khigh", "Payne, Julie", "Kleeb, Helen", "Gray, Joe", "Nalder, Reggie", "Stevens, Bert", "Masters, Michael", "Lowell, Tom"],
"title": "The Manchurian Candidate"
 } {
"index": {
    "_index": "movies",
    "_type": "listings",
    "_id": "3"
}
} {
"director": "Baird, Stuart",
"genre": ["Action", "Crime", "Thriller"],
"year": 1998,
"actor": ["Downey Jr., Robert", "Jones, Tommy Lee", "Snipes, Wesley", "Pantoliano, Joe", "Jacob, Ir\u00e8ne", "Nelligan, Kate", "Roebuck, Daniel", "Malahide, Patrick", "Richardson, LaTanya", "Wood, Tom", "Kosik, Thomas", "Stellate, Nick", "Minkoff, Robert", "Brown, Spitfire", "Foster, Reese", "Spielbauer, Bruce", "Mukherji, Kevin", "Cray, Ed", "Fordham, David", "Jett, Charlie"],
"title": "U.S. Marshals"
} {
"index": {
    "_index": "movies",
    "_type": "listings",
    "_id": "4"
}
} {
"director": "Ray, Nicholas",
"genre": ["Drama", "Romance"],
"year": 1955,
"actor": ["Hopper, Dennis", "Wood, Natalie", "Dean, James", "Mineo, Sal", "Backus, Jim", "Platt, Edward", "Ray, Nicholas", "Hopper, William", "Allen, Corey", "Birch, Paul", "Hudson, Rochelle", "Doran, Ann", "Hicks, Chuck", "Leigh, Nelson", "Williams, Robert", "Wessel, Dick", "Bryar, Paul", "Sessions, Almira", "McMahon, David", "Peters Jr., House"],
"title": "Rebel Without a Cause"
 }

当我使用这个命令之后:

curl -XGET 'search-movies-4f3nw7eiia2xiynjr55a2nao2y.us-west-1.es.amazonaws.com/movies/_search?q=Frankenheimer'

我从来没有得到任何回报。总是返回 0。这是我得到的结果:

如果我做得对,我不是,但我认为我至少应该能够看到一些东西,因为我在上传的 json 数据的主管键中有弗兰肯海默。谁能解释一下?

【问题讨论】:

  • 你只做curl -XGET search-movies-4f3nw7eiia2xiynjr55a2nao2y.us-west-1.es.amazonaws.com/movies/_search有什么结果吗?这应该确保数据实际上在索引中
  • @JohnVeldboom 有趣。我从来没有尝试过。是的,我明白了。那么为什么我在添加搜索查询时没有得到呢?
  • @JohnVeldboom 这是我尝试你的时候得到的结果:take":1,"timed_out":false,"_shards":{"total":5,"successful":5,"failed ":0},"hits":{"total":1,"max_score":1.0,"hits":[{"_index":"movies","_type":"movie","_id":"1 ","_score":1.0,"_source":{"director":"Burton, Tim", "genre": ["Comedy","Sci-Fi"], "year": 1996, "actor": [ “杰克·尼科尔森”、“皮尔斯·布鲁斯南”、“莎拉·杰西卡·帕克”]、“标题”:“火星袭击!”}}]}}

标签: amazon-web-services elasticsearch amazon-elasticsearch


【解决方案1】:

尝试使用 curl -XGET search-movies-4f3nw7eiia2xiynjr55a2nao2y.us-west-1.es.amazon‌​aws.com/movies/_sear‌​ch 搜索整个索引,默认情况下将返回前 10 个结果。如果返回小于 10,则数据可能不在索引中。

您可以通过将查询更改为:

curl -XGET search-movies-4f3nw7eiia2xiynjr55a2nao2y.us-west-1.es.amazon‌​aws.com/movies/_sear‌​ch?q=director:Burton

查看Elasticsearch URI Search 获取完整的参数列表。

【讨论】:

  • 谢谢你是对的。所以一个问题,如果我在 mysql 中已经有一些列,我应该抓住我想要添加的列数据进行搜索并将其插入到弹性搜索中吗?
  • 是的,没错。我之前使用过 Elasticsearch - 效果很好。您只需要某种将数据索引到 ES 中的工作。对此有两个建议:1)在 MySQL 中使用 last updated 字段,这将允许您仅重新索引已更改的数据。 2) 使用记录的唯一id MySQL 作为ES id。这将允许您在 ES 中轻松更新记录。如果您需要更多帮助,请随时在 Twitter 上联系我@jveldboom
  • 谢谢,如果我没记错的话,我可能需要使用 logstash 或者可能是 kenisis+ lamda 来迁移我在 mysql db 中的所有数据,并且我需要发布任何新数据mysql db 在插入到 mysql db 的同时进行弹性搜索。对吗?第二步好看吗?
  • 如果您有大量数据要索引,那么是的,Logstash 或 Kinesis 都可以。但如果它相对较小,一个简单的循环数据并将每一行插入 ES 的脚本也可以工作。此外,如果您需要立即搜索数据,那么可以在插入时将数据发布到 ES。但是搜索能力可以等待,你可以批量处理它以供以后使用。
猜你喜欢
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
  • 2012-03-06
相关资源
最近更新 更多