因此,默认情况下,field1是通过使用默认分析器进行弹性搜索来分析的。
我在下面搜索短语查询,但它没有返回任何结果。
{
"query": {
"filtered": {
"filter": {
"bool": {
"should": [
{
"query": {
"multi_match": {
"query": "abc\\-xyz OR bcd\\-gyz",
"type": "phrase",
"fields": [
"field1"
]
}
}
}
]
}
}
}
}
}
因此弹性搜索短语查询不适合于OR运算符。知道为什么它不起作用吗?它是弹性搜索的一个限制,因为文本中有特殊的字符连字符(-)?
根据注释,使用与或
一起使用的查询字符串添加一个答案,但不能使用多个多匹配,因此必须使用查询字符串
。
使用相同的索引文档,添加在以前的答案,但与下面的搜索查询。
{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "\"abc-xyz\" OR \"bcd-gyz\"",
"fields": [
"title"
]
}
}
]
}
}
}
搜索结果
"hits": [
{
"_index": "phrasemulti",
"_type": "doc",
"_id": "1",
"_score": 0.05626005,
"_source": {
"title": "bcd-gyz"
}
},
{
"_index": "phrasemulti",
"_type": "doc",
"_id": "2",
"_score": 0.05626005,
"_source": {
"title": "abc-xyz"
}
}
]
当您移除少量字符时,Phars
查询将不起作用,或者当您将运算符更改为和
时,示例数据不会返回预期的搜索结果。
{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "\"abc-xyz\" OR \"bcd-gz\"",
"fields": [
"title"
]
}
}
]
}
}
}
仅返回一个搜索结果,因为示例数据中不存在短语bcd-gz
。
"hits": [
{
"_index": "phrasemulti",
"_type": "doc",
"_id": "2",
"_score": 0.05626005,
"_source": {
"title": "abc-xyz"
}
}
]
由于已经有很多关于连字符的问题,我已经尝试了以下解决方案: 使用字符筛选器:ElasticSearch-在名称中使用连字符进行搜索。 所以我做了这个映射: 所以char筛选器似乎没有在搜索字符串上执行?我该怎么做才能让它起作用?
我还没有为索引创建任何显式设置。谢了。
我刚开始做弹性搜索。我想通过子字符串搜索,它由数字和像“/”和“-”这样的符号组成。例如,我使用默认设置和一个索引字段创建索引: 然后,我将一些数据添加到我的索引中: 不返回命中。如果我移除星形符号,那么作为回应,我会看到两个点击:“1/1-35”和“1/2-25”。如果我尝试用反斜杠(“1\/1*”)转义斜杠符号,结果分别是相同的。 当我的查询中有“-”符号时,那么我必须转义这个Lucene特殊
实现此功能的推荐方法是什么?注意,我使用的是查询字符串查询。
尝试使用通配符进入和弹性搜索精确短语搜索时遇到问题query_string。 希望能够返回结果,这将是所有变体的精确短语。i、 e.“库尔斯酿酒厂”、“库尔斯酿酒厂”、“库尔斯酿酒厂”等。 我不同意这种方法,但想搜索大部分文档以找到匹配的1或2个字段。
我使用elasticsearch处理带有日期值的字符串字段的数据,如下所示: 我试图使用范围筛选器从日期到日期获取值。例如: 但是结果不包含的值 如果使用或,则结果中将包含的值。 我的查询有什么问题?