我目前正在调查常用术语查询的使用,因为文档有点缺乏(或者我不是简单地找不到关于这些问题的任何文档)我不完全确定某些操作是否与常见术语查询不兼容,或者如果我做错了.
我目前在Ubuntu 12.04,64位的Elasticsearch版本0.90.5.
这是我观察到的:
查询类型match和match_phrase似乎与使用high_freq_operator,low_freq_operator和minimum_should_match选项不兼容.(例如[match] query does not support [high_freq_operator]和类似的)
并且,或者,而不是(复合表达式)在它们的组件表达式指定使用公共术语时似乎产生了破坏的底层表达式.(例如[_na] filter malformed, must start with start_object)
span_term查询似乎与常见术语查询不兼容.(例如[span_term] query does not support [common])
我的查询看起来如下:
这个解析例如......
{ "query": {
"match_phrase": {
"subject": {
"common": {
"body": {
"cutoff_frequency": 0.001,
"query": "something not important"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个没有解析,引用"[match]查询不支持[high_freq_operator]":
{"query": {
"match_phrase": {
"subject": {
"common": {
"body": {
"cutoff_frequency": 0.001,
"high_freq_operator": "or",
"query": "something not important"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个无法解析,引用"过滤格式错误,必须以start_object开头":
{
"filter": {
"or": [
{
"query": {
"match": {
"subject": {
"common": {
"body": {
"cutoff_frequency": 0.001,
"query": "PLEASE READ: something not important"
}
}
}
}
}
},
{
"query": {
"range": {
"date": {
"to": "2009-12-31T23:59:59Z"
}
}
}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
您误解了查询的结构.查询可以是"叶子"查询(直接处理单个字段或字段),也可以是包含其他查询的"复合"查询,例如bool和dis_max查询.
一common组术语查询是在自己的权利叶查询,就像match,match_phrase,term和range查询.您无法在common另一个叶子查询中嵌入查询INSIDE.
的match查询(不是match_phrase也不是match_phrase_prefix)已被部分地集成与common组术语查询在它支持的cutoff_frequency参数.这是一个简单的集成:如果您指定了cutoff_frequency那么match查询将在内部重写为common查询.如果你想要common-terms 的全部功能,那么你需要直接使用它.
所以这个match查询:
{
"query": {
"match": {
"subject": {
"query": "some words to query",
"cutoff_frequency": 0.001
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
是这个common查询的等价物:
{
"query": {
"common": {
"subject": {
"query": "some words to query",
"cutoff_frequency": 0.001
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
不同的是,在common查询中,还有许多其他旋钮,你可以旋转,例如high_freq_operator等
| 归档时间: |
|
| 查看次数: |
2718 次 |
| 最近记录: |