使弹性搜索只返回field_names matchig我的查询

时间:2020-04-24 05:43:25

标签: elasticsearch-query

我正在使用弹性查询搜索来查询我的数据库。
在我的数据库中,将有不同的对象,每个对象都有field_names。
如果我输入任何关键字作为查询,我将获得所有具有与查询匹配的field_name的对象。这也包括该特定对象的其他field_name。
我的问题是有什么方法可以检索仅具有查询匹配的field_names的对象。
例如,我的对象的属性为["first name", "last name", "city"]。假设我的对象Obj1的名字为“ ABC”,而我的对象Obj2的城市为“ ABC”。现在,当我输入任何查询字符串“ ABC”时,结果应与此类似。

{
  "results": [
    {
      "first_name": "ABC"
    },
    {
      "city": "ABC"
    }
  ],
  "result_count": 2,
  "cursor": "2"
}

欢迎提出任何建议。预先感谢

1 个答案:

答案 0 :(得分:0)

这是不可能的。如果要在多个索引的所有字段中进行搜索而没有提供选定的字段名称,则默认情况下,它将始终返回匹配文档上所有可用的字段。更好的方法是将搜索限制在选择更有意义的字段,并利用突出显示功能,以便您可以使用它显示匹配的文本部分。

通过突出显示,您可以添加自定义HTML / CSS标签。请查看以下有关突出显示的文档。

https://www.elastic.co/guide/en/elasticsearch/reference/7.6/search-request-body.html#request-body-search-highlighting