当使用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" } } ] } } }'
不返回记录。
标准分析仪
标准分析器是Elasticsearch使用的默认分析器。它是分析可能是任何语言的文本的最佳一般选择。它根据Unicode联盟定义的单词边界拆分文本,并删除大多数标点符号。最后,它将所有术语小写。
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" } } ] } } }'
这条线可能会有帮助
CATALINA_OPTS=“-dcom.sun.management.jmxremote-dcom.sun.management.jmxremote.port=6969-dcom.sun.management.jmxremote.ssl=false-dcom.sun.management.jmxremote.authenticate=false${CATALINA_OPTS}” 并使用jcons
问题内容: 我有两种日志消息: 第一个消息是已发送消息的类型,第二个消息是确认消息已传递的消息。 它们之间的区别是后缀,我已将其与“ id”分开并可以对其进行查询。 这些消息将按以下格式解析并存储在elasticsearch中: 我想找出哪些消息已成功发送,哪些没有成功。我是Elasticsearch的初学者,所以我真的很努力。 我目前正在尝试术语聚合,但是我所能实现的就是以下代码: 向我显示已发
我试图获取缺少字段“topic.description”和匹配项“fundedunder.programme”:“abc”的文档。 映射: 我的查询如下所示:
问题内容: 我想替换所有我的Elasticsearch索引文档中的单个用户名。是否有API查询? 我尝试搜索多个但找不到。有人知道吗? 我的情况: 我在名为“ test”的索引中具有上述数据,并键入“ movies”。在这里,我想用“ alice”代替所有的“ bob”名称。 谢谢 问题答案: 通过查询更新是解决之道。 注意:请确保启用动态脚本,以使其起作用。
问题内容: 在ElasticSearch中是否有可能形成可以保留术语顺序的查询? 一个简单的例子是使用标准分析器为这些文档建立索引: 你知道要搜索 你知道搜索 知道为您搜寻 我可以查询,这将返回所有文档,包括第三个文档。 如果我只想检索按此特定顺序排列有术语的文档怎么办?我可以构成一个查询吗? 考虑到仅通过引用文本即可获得短语:(检索第一和第二文档)在我看来,应该有一种方法可以保留不相邻的多个术语
另外,类型中的所有文档都存储了上面提到的community的值。感谢帮助。