我目前正在调查常用术语查询的使用,因为文档有点缺乏(或者我不是简单地找不到关于这些问题的任何文档)我不完全确定某些操作是否与常见的操作不兼容术语查询,或者如果我做错了。
我目前在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"
}
}
}
}
}
}
这个没有解析,引用“[match]查询不支持[high_freq_operator]”:
{"query": {
"match_phrase": {
"subject": {
"common": {
"body": {
"cutoff_frequency": 0.001,
"high_freq_operator": "or",
"query": "something not important"
}
}
}
}
}
}
这个没有解析,引用“过滤格式错误,必须以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"
}
}
}
}
]
}
}
答案 0 :(得分:5)
您误解了查询的结构。查询可以是“叶子”查询(直接处理单个字段或字段),也可以是包含其他查询的“复合”查询,例如bool
和dis_max
查询。
common
- 术语查询本身就是一个叶子查询,就像match
,match_phrase
,term
和range
查询一样。您无法在另一个叶子查询中嵌入common
查询。
match
查询(不是match_phrase
和match_phrase_prefix
)已与common
- 条款查询部分集成,因为它支持cutoff_frequency
参数。这是一个简单的集成:如果您指定cutoff_frequency
,那么match
查询将在内部重写为common
查询。如果您想要common
- 术语的全部功能,那么您需要直接使用它。
所以这个match
查询:
{
"query": {
"match": {
"subject": {
"query": "some words to query",
"cutoff_frequency": 0.001
}
}
}
}
相当于此common
查询:
{
"query": {
"common": {
"subject": {
"query": "some words to query",
"cutoff_frequency": 0.001
}
}
}
}
不同之处在于common
查询中有许多其他旋钮可以旋转,例如high_freq_operator
等
答案 1 :(得分:0)
对于Elasticsearch 6.4 :
例如,使用过滤器查询将常见加入其中,
{
"explain": true,
"query": {
"bool": {
"must": {
"common": {
"task_content": {
"query": "this is bonsai cool superb",
"cutoff_frequency": 0.01,
"high_freq_operator": "and"
}
}
},
"filter": {
"term": {
"subject_id": 2
}
}
}
},
"highlight": {
"fields": {
"task_content": {}
}
}
}
希望它对新版本有所帮助。