Elasticsearch 2.x must_not 无法过滤匹配数据,但它在 5.3 中工作正常
Elasticsearch 2.x must_not can not filter match data, but it working fine in 5.3
Elasticsearch 2.x 和 5.x 使用 bool->must->match 都很好,但是 must_not 不能使用 Elasticsearch 2.x。如果用 match 替换 term,并指定一个精确的条件,它工作得很好。有什么方法可以使 must_not 和匹配在 Elasticsearch 2.x 中工作,谢谢。
json代码:
{
"query": {
"bool": {
"must_not": {
"match": {
"subject": "part"
}
}
}
}
抱歉这个问题,我是Elasticsearch的新手,我没有发现我的同事为Es 2.x中的"subject"设置了三个子字段,我没有指定any 子字段,所以它 运行 什么都没有。两个引擎有不同的设置。
ES 2.x
{
"type": "string",
"index": "no",
"fields": {
"py": {
"type": "string",
"term_vector": "with_positions_offsets",
"analyzer": "pinyin_analyzer"
},
"pyfl": {
"type": "string",
"term_vector": "with_positions_offsets",
"analyzer": "pinyin_analyzer_first_letter"
},
"raw": {
"type": "string",
"analyzer": "ik_max_word"
}
}
}
ES 5.x
{
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
用这个 json
效果很好
{
"query": {
"bool": {
"must_not": {
"match": {
"subject.raw": "part"
}
}
}
}
谢谢大家的回答。
我认为问题不在于版本。我使用的是 1.7 版。
你的 json 有问题,用 http://jsonlint.com/ 验证。
试试这个:-
{
"query": {
"bool" : {
"must_not" : {
"match" : { "subject" : "part" }
}
}
}
}
Elasticsearch 2.x 和 5.x 使用 bool->must->match 都很好,但是 must_not 不能使用 Elasticsearch 2.x。如果用 match 替换 term,并指定一个精确的条件,它工作得很好。有什么方法可以使 must_not 和匹配在 Elasticsearch 2.x 中工作,谢谢。 json代码:
{
"query": {
"bool": {
"must_not": {
"match": {
"subject": "part"
}
}
}
}
抱歉这个问题,我是Elasticsearch的新手,我没有发现我的同事为Es 2.x中的"subject"设置了三个子字段,我没有指定any 子字段,所以它 运行 什么都没有。两个引擎有不同的设置。
ES 2.x
{
"type": "string",
"index": "no",
"fields": {
"py": {
"type": "string",
"term_vector": "with_positions_offsets",
"analyzer": "pinyin_analyzer"
},
"pyfl": {
"type": "string",
"term_vector": "with_positions_offsets",
"analyzer": "pinyin_analyzer_first_letter"
},
"raw": {
"type": "string",
"analyzer": "ik_max_word"
}
}
}
ES 5.x
{
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
用这个 json
效果很好 {
"query": {
"bool": {
"must_not": {
"match": {
"subject.raw": "part"
}
}
}
}
谢谢大家的回答。
我认为问题不在于版本。我使用的是 1.7 版。
你的 json 有问题,用 http://jsonlint.com/ 验证。 试试这个:-
{
"query": {
"bool" : {
"must_not" : {
"match" : { "subject" : "part" }
}
}
}
}