elasticsearch - 运算符在弹性搜索中的关键字类型字段中不起作用
问题描述
{
"query": {
"match": {
"activity_type": {
"query": "video Post",
"operator": "OR"
}
}
}
}
上面的查询不是在弹性中搜索记录我有视频和帖子的数据,上面的查询适用于文本类型的字段,但不适用于关键字类型的字段。
解决方案
不分析关键字字段。这意味着在每个文档上,该字段的值保持原样,而不是分解为多个术语。这实际上意味着您无法针对单个术语搜索该字段。仅搜索整个字段值。
例如,如果您有字段namekeyword
的映射,以及包含以下内容的文档:
{
// rest of the document
"name": "Foo Bar Baz"
// rest of the document
}
如果您的搜索是:
{
"query": {
"match": {
"name": {
"query": "Foo Bar",
"operator": "OR"
}
}
}
}
该文件将不会被检索。您的查询需要是"query": "Foo Bar Baz"
.
您的问题的一个可能解决方案是将该字段作为text
字段和字段进行索引keyword
。你可以这样做:
{
"mappings": {
"properties": {
"activity_type": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
}
}
这样做是.raw
在您的普通字段中人为地创建字段activity_type
,前者具有text
类型,后者具有keyword
类型。
然后您的搜索将起作用,并且您仍然可以从keyword
人工创建字段下的映射中受益activity_type.raw
。
推荐阅读
- php - Symfony 生命周期 CSRF 令牌
- c# - 当我在 C# 中通过 HttpWebRequest 上传大文件时,我得到 Stream is too long 异常
- angular - 仅当结果为真时,如何使我的 mat-slide-toggle 更改?
- angular - Angular 6 ng-bootstrap 评级不起作用
- batch-file - 在循环文件夹路径中使用通配符
- eclipse - 如何在 rcp 4 应用程序中获取所有已安装的功能
- java - 如何以大写形式制作 BottomNavigationView 菜单?
- javascript - 在初始应用程序加载 Reactjs 时推送到 dataLayer
- c# - C# SerialPort datareceived 和 WPF UI 冻结
- php - 检测是否已达到最大页数