ElasticSearch:完全一致的单词和全文搜索

时间:2016-06-11 18:04:39

标签: elasticsearch

我正在研究ElasticSearch并希望同时激活精确的单词和全文搜索。使用not_analyzed索引进行精确的单词搜索工作正常,全文搜索在分析索引时工作正常。现在我想结合这两个。下面是我想要的例子:

假设我有两条记录:

  1. 这是苹果
  2. 苹果
  3. 如果用户搜索“apple”,那么应该有一个结果(精确的单词搜索),但如果用户搜索“apple *”,则必须有两个记录(全文搜索)。

1 个答案:

答案 0 :(得分:0)

我可以使用elasticsearch执行确切的单词和全文搜索。我已将字段映射到not_analyzed索引,然后使用通配符作为全文,使用过滤器/术语进行精确搜索。所以我几乎完成了所有的事情。现在最后一期我将面临如何在多个字段中使用通配符。

下面是通配符查询: "query": { "wildcard": { "Field1": { "value": "*apple*" } , "Field2": { "value": "*apple*" } } }

我有多个字段Field1,Field2 .... FieldN。我必须为所有文件搜索相同的值。我试过了: import UIKit import XLPagerTabStrip class MenuTabStrip: ButtonBarPagerTabStripViewController { override func viewDidLoad() { self.settings.style.selectedBarHeight = 5.0 self.settings.style.selectedBarBackgroundColor = UIColor.blueColor() super.viewDidLoad() // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func viewControllersForPagerTabStrip(pagerTabStripController: PagerTabStripViewController) -> [UIViewController]{ return [Reminders(), testbobViewController()] }

但它只显示最后一个字段的结果(在上面的例子中为Field2)。

实际上我不想对所有字段进行查询,并将结果与​​单个结果集相结合。我认为必须有单一查询来获取带有通配符的所有字段的结果。请帮帮我。

由于 Tarlok