flutter - 如何在颤动中映射 Elasticsearch match_phrase 查询
问题描述
我正在尝试将弹性搜索添加到我的颤振应用程序中。我正在使用elastic_client来处理连接
如何以颤振格式映射以下查询?
POST /books/_search
{
"query": {
"match_phrase": {
"name" : {
"query" : "Roberts book",
"slop": 50
}
}
}
}
关于弹性搜索和颤振的信息很少。
现在我有以下代码可以使用 elastic_client 进行查询。但据我了解,这个包没有实现match_phrase。我需要查询match_phrase。
final searchResult = await client.search(
index: 'books',
type: '_doc',
query: elastic.Query.term('name', ['$searchQuery'.toLowerCase()]),
source: true);
如果您想了解更多信息,我遵循了本教程。
- 更新
在@Vlad 和 elastic_client 创建者的帮助下
它可能对某人有用,所以完整的解决方案是:
final transport = HttpTransport(url: 'http://myip:9200/');
final client = elastic.Client(transport);
final searchResult = await client.search(
index : 'books',
type: '_doc',
query: {
"match_phrase": {
"name" : {
"query" : '$searchQuery'.toLowerCase(),
"slop": 50,
},
},
});
解决方案
通过遵循匹配实现源代码,看起来这些方法只是用于创建 JSON 的包装器。因此,基于此,我可以得出,您可以执行以下操作:
final searchResult = await client.search(
index: 'books',
type: '_doc',
query: {
'match_phrase': {
'name': {
'query': '$searchQuery'.toLowerCase(),
'slop': 50
}
},
};
source: true);
请注意,我没有使用 Flutter 的经验,这只是我基于源代码的想法。
或者,您可以创建自己的方法来为 Elasticsearch 创建 JSON。
推荐阅读
- macos - 如何使 SwiftUI List/OutlineGroup 懒于与文件系统等大树一起使用?
- java - 为什么getValidStr方法会变成死循环?
- angular - 将 URLSearchParams 转换为 HttpParams - Angular HttpClient
- python - 如何在 Python 中使用 MySQL 连接器获取 SQL 查询的执行时间?
- mysql - 按月分组并按 id mysql 分隔
- python - 解析缺少字段的 JSON
- vue.js - 如何根据特定的 Vuex 状态从 Vue.js 组件内部激活/停用 Electron.js 子菜单?
- python - Django --> python manage.py runserver
- c++ - 设计具有 RAII 语义的线程安全队列
- java - 如何在链接堆栈的实现中编写 toString() 和 peek() 函数?