我没有看到https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html
所述的使用字词搜索时我预期的结果ElasticSearch版本是2.3.2:使用它来创建数据:
curl -XPUT http://myelastic:9201/myindex/mytype/90273504?pretty=true -d '{ "CLIENT_ID" : "000000001", "USER_TYPE" : "ABC"}'
curl -XPUT http://myelastic:9201/myindex/mytype/90273505?pretty=true -d '{ "CLIENT_ID" : "000000002", "USER_TYPE" : "ABC"}'
此查询显示两个记录:
curl -D - -o - http://myelastic:9201/myindex/mytype/_search?pretty=true -H"Accept: application/json" -d '{ "query" : { "match_all" : { } } }'
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 2,
"max_score" : 1.0,
"hits" : [ {
"_index" : "myindex",
"_type" : "mytype",
"_id" : "90273505",
"_score" : 1.0,
"_source" : {
"CLIENT_ID" : "000000002",
"USER_TYPE" : "ABC"
}
}, {
"_index" : "myindex",
"_type" : "mytype",
"_id" : "90273504",
"_score" : 1.0,
"_source" : {
"CLIENT_ID" : "000000001",
"USER_TYPE" : "ABC"
}
} ]
}
}
此查询按预期显示一条记录:
curl -D - -o - http://myelastic:9201/myindex/mytype/_search?pretty=true -H"Accept: application/json" \
-d '{ "query" : { "bool" : { "should" : [ { "term" : { "CLIENT_ID" : "000000001" } } ] } } }'
但是使用不同的术语会导致没有记录:
curl -D - -o - http://myelastic:9201/myindex/mytype/_search?pretty=true -H"Accept: application/json" \
-d '{ "query" : { "bool" : { "should" : [ { "term" : { "USER_TYPE" : "ABC" } } ] } } }'
最终,我想基于多个条款的匹配对记录进行评分,从多个条款的选择开始,如下所示:
curl -D - -o - http://myelastic:9201/myindex/mytype/_search?pretty=true -H"Accept: application/json" \
-d '{ "query" : { "bool" : { "should" : [ { "term" : { "CLIENT_ID" : "000000001" } }, { "term" : { "USER_TYPE" : "ABC" } } ] } } }'
但是现在我试图理解为什么
curl -D - -o - http://myelastic:9201/myindex/mytype/_search?pretty=true -H"Accept: application/json" \
-d '{ "query" : { "bool" : { "should" : [ { "term" : { "USER_TYPE" : "ABC" } } ] } } }'
不返回任何记录。
答案 0 :(得分:2)
标准分析仪
标准分析仪是默认的分析仪 Elasticsearch使用。它是分析文本的最佳选择 可能是任何语言。它将文本分割为单词边界,如 由Unicode Consortium定义,并删除大多数标点符号。 最后,它会缩小所有条款。
https://www.elastic.co/guide/en/elasticsearch/guide/current/analysis-intro.html#_built_in_analyzers
尝试搜索小写文字。我认为它适用于数字,因为它们没有案例。
curl -D - -o - http://myelastic:9201/myindex/mytype/_search?pretty=true -H"Accept: application/json" \
-d '{ "query" : { "bool" : { "should" : [ { "term" : { "USER_TYPE" : "abc" } } ] } } }'