Nin*_*nja 8 lucene elasticsearch
我希望突出显示匹配的结果.如果我提到字段名称并且它返回突出显示的文本,这对我有用,但是如果我将字段命名为"_all",则它不返回任何值.这对我有用:
curl -XGET "http://localhost:9200/my_index/my_type/_search?q=stackoverflow&size=999" -d '{
"highlight":{
"fields":{
"my_field":{}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
这将返回预期值,如下所示:[highlight] => stdClass对象([my_field] =>数组([0] => stackoverflow是技术人员的最佳网站))
但是,当我这样说:
curl -XGET "http://localhost:9200/my_index/my_type/_search?q=stackoverflow&size=999" -d '{
"highlight":{
"fields":{
"_all":{}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
我得到空值/没有结果.
[highlight] => stdClass Object ( [_all] => Array () )
Run Code Online (Sandbox Code Playgroud)
如何让它在任何字段上工作,以便我不必提及字段名称?
Bos*_*osh 27
_all
在索引中添加存储字段另一种快速修复:使用*
而不是_all
:
curl -XGET "http://localhost:9200/my_index/my_type/_search?q=stackoverflow&size=999" -d '{
"highlight":{
"fields":{
"*":{}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
Chi*_*h25 16
如果您正在使用,ES 2.x
那么您需要设置require_field_match
选项,false
因为所做的更改,来自文档
require_field_match选项的默认值已从false更改为true,这意味着默认情况下,荧光笔仅会将查询的字段考虑在内.
这意味着,在查询_all字段时,尝试在_all以外的任何字段上突出显示将不会生成突出显示的片段.
"highlight": {
"fields": {
"*": {}
},
"require_field_match": false
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您需要将_all字段映射为已存储.下面的映射应该可以解决问题.请注意,这将添加到索引大小.
{
"my_type": {
"_all": {
"enabled": true,
"store": "yes"
}
}}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5083 次 |
最近记录: |