我正在尝试使用elasticsearch搜索特定的短语,即"foo bar".我的查询类似于下面的查询:
curl -X GET "http://localhost:9200/objects/object/_search" -d '{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "\"foo bar\"",
"default_field": "_all"
}
}
]
}
}
}'
Run Code Online (Sandbox Code Playgroud)
我的索引中有两个对象,看起来类似于:
{
sub_sections: [
{
name: "foo"
},
{
name: "bar"
}
]
}
Run Code Online (Sandbox Code Playgroud)
和
{
sub_sections: [
{
name: "foo bar"
}
]
}
Run Code Online (Sandbox Code Playgroud)
当我在查询中使用双引号时,我期待只返回匹配短语的最后一个对象.但是,始终返回两个对象.auto_generate_phrase_queries到目前为止,我已经尝试过像++这样没有运气的选项.
这是预期的行为吗?我怎么能只返回具有完全短语匹配的文件?
默认情况下,两个示例的索引方式完全相同。当同一字段的多个实例被索引时,它们将按顺序索引,一个字段的最后一项和下一个字段的第一项之间没有间隙。这就是短语搜索跨越字段实例的原因。position_offset_gap您可以通过在映射中设置非零值来增加字段之间的间隙。请参阅https://gist.github.com/4420794进行快速演示。
| 归档时间: |
|
| 查看次数: |
2934 次 |
| 最近记录: |