【发布时间】:2020-03-10 05:49:29
【问题描述】:
我正在向 Elastic Search 发送查询以查找具有与查询匹配的字段的所有段。 我们正在实现一个“免费搜索”,用户可以编写他想要的任何文本,我们构建一个查询,搜索这个文本会抛出所有的段字段。 其一个(或多个)字段具有此文本的每个段都应返回
例如:
我想获取名称为“tony lopez”的所有片段。 每个段都有一个“first_name”字段和一个“last_name”字段。
我们的服务构建的查询:
"multi_match" : {
"query": "tony lopez",
"type": "best_fields"
"fields": [],
"operator": "OR"
}
使用此查询的 Elastic 的结果是包含“first_name”字段“tony”和“last_name”字段“lopez”的段,但也是“first_name”字段为“joe”和“last_name”时的段是“托尼”。
在这种类型的查询中,我只想接收其名称为“tony (first_name) lopez (last_name)”的段
我该如何解决这个问题?
【问题讨论】:
-
为问题添加更多上下文总是更好。如果您指定映射和一些示例数据会很棒
-
正确的结果是什么?
-
感谢您的回答!每个字段提到的数据类型都是“文本”。我们实施了“免费搜索”,您可以插入任何文本并接收该文本在其字段之一中找到的段。正确的结果只有名字是“tony”和姓氏是“lopez”的片段。
标签: java jquery json elasticsearch