Sen*_*ini 5 search hyphen elasticsearch
我想寻求帮助。我想在标题和内容中搜索一个单词。这是结构
'body' => array(
'mappings' => array(
'myindex' => array(
'_source' => array(
'enabled' => true
),
'properties' => array(
'Title' => array(
'type' => 'string',
'fields'=> array(
'raw' => array(
'type' => 'string',
'index' => 'not_analyzed'
)
)
),
'Content' => array(
'type' => 'string'
),
'Image' => array(
type' => 'string',
'analyzer' => 'standard'
)
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
查询字符串看起来像这样,在这里我想在“ 15-game”之类的文本中搜索“ 15-g”:
"query" : {
"query_string": {
"query": "*15-g*",
"fields": [ "Title", "Content" ]
}
}
Run Code Online (Sandbox Code Playgroud)
如果我重复这个问题,请接受我的道歉,但我无法查明正在发生什么以及为什么它不返回任何结果。
我已经看过:
但是我不能和我一起工作。
真正有趣的是,如果我搜索“ 15-g”(15个空格 - 空格 g),它将返回结果。
提前非常感谢您!
.raw
也向您添加一个字段Content
并在字段上进行搜索.raw
:
{
"query": {
"query_string": {
"query": "*15-g*",
"fields": [
"Title.raw",
"Content.raw"
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
无论您要搜索的文本中有空格,并且您希望该空格与您的字段匹配,都需要对其进行转义(使用\
)。另外,只要您有大写字母和通配符,并且您希望与.raw
需要设置为 的字段lowercase_expanded_terms
进行匹配false
,因为默认情况下该设置是true
并且它将小写搜索字符串(它将搜索laptop - black
):
{
"query": {
"query_string": {
"query": "*Laptop\\ -\\ Black*",
"lowercase_expanded_terms": false,
"fields": [
"Title.raw",
"Content.raw"
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7723 次 |
最近记录: |