标签: Nest
elasticsearch-net
在将Nest从5.4升级到6.2之后,我找不到使用已知字段名作为字符串创建MatchPhraseQueryDescriptor的正确语法。.Field()方法似乎不再采用字符串,而是采用对象路径
为Nest 6.2重新编写以下Nest 5.4代码段的最简单方法是什么
var matchPhrase = new MatchPhraseQueryDescriptor<MyType>()
.Field("MyField")
.Query("MyQuery");
var match
我正在编写一个解析数据并将其插入弹性搜索的应用程序。插入过程非常耗时,我需要允许用户在插入仍在继续时查看插入的数据。所有my db元素都实现了一个名为IExtractionObject的基本接口。我尝试了以下代码:
public IEnumerable GetItems(IEnumerable类型,long objectCategory,int size=50)
{
var-from=0;
var结果=搜索(类型、对象类别、发件人、大小);
while(result.Documents.Any(
如何在使用嵌套查询的弹性搜索中使用多个过滤器对数据进行排序
我需要为结果集中的汽车应用两个字段,比如价格和公里。我希望根据这些字段按ASC或DESC对结果进行排序
如何根据条件或某些过滤器获得前五名结果
如果可用,请提供一些链接。这将回答您的问题:
IEnumerable searchableFields=新列表(){“价格”、“公里数”};
SearchDescriptor描述符=新的SearchDescriptor();
descriptor=descriptor.Size(5).OnFie
标签: Nest
elasticsearch-net
我试图使用NEST(高斯函数)创建一个函数\u score elasticsearch查询,并将一个地理点对象作为“原点”传递,但是NEST中的“原点”方法只接受一个字符串,结果elasticsearch无法解析查询。
如何在NEST中编写查询,以便Elasticsearch能够正确解析它
var originLoc = JsonConvert.SerializeObject(userLocation.GeoCenter);
var searchDesc = new SearchDescript
我正在寻找如何使用对象初始值设定项语法初始化具有多个非嵌套聚合的SearchRequest对象
如果请求以param的形式通过lambda expression helper传递到ElasticClient.Search()中,则其编写方式如下:
var response = Client.Search<person>(s => s.Aggregations(a =>
a.Terms("bucketAge", t => t.Field
我正在使用以下代码创建索引:
var ElasticSettings = new ConnectionSettings(new Uri(ConnectionString))
.DefaultIndex(_IndexName)
.DefaultMappingFor<PictureObject>(M => M
.Ignore(_ => _._id)
.Ignore(_ =&
我有以下疑问:
return Q
.MultiMatch(Fu => Fu
.Fields(F => F
.Field(Ff => Ff.Tags)
.Field(Ff => Ff.Title)
)
.Query(Terms)
.Fuzziness(Fuzziness.EditDistance(2))
);
如何向查询中添加将执行以下操作的辅助
我正在NEST中处理聚合,到目前为止一切都很好,但现在当我尝试通过.children访问嵌套字段时,结果为空,但是调试器正确显示了数据
如果我通过邮递员发布此查询,我会得到以下结果:
{
“take”:50,
“超时”:false,
“_碎片”:{
“总数”:1,
"成功":一,,
“跳过”:0,
“失败”:0
},
“点击次数”:{
“总数”:{
“价值”:9,
“关系”:“情商”
},
“最大分数”:空,
“点击次数”:[]
},
“聚合”:{
“过滤器#折叠”:{
“元”:{},
“文件
我不熟悉弹性搜索和使用(尝试)嵌套库。我正在使用Serilog弹性搜索接收器将日志写入索引。所以首先要考虑的是,我无法控制接收器使用的结构,只能控制我选择记录的结构化日志属性
无论如何,我只是尝试运行一个基本的搜索,我想从索引返回第一个X文档。我可以从查询中获取一些属性值,但任何字段都没有
查询如下:
var searchResponse = await _elasticClient.SearchAsync<LogsViewModel>(s => s
.Index
我有一个索引,其中包含我想要点击的项目的嵌套集合。集合项包含多个属性,所有属性都必须匹配某个查询,而不仅仅是其中任何一个。模型如下:
公共类索引entry1
{
公共IEnumerable NestedProperty1{get;set;}
}
公共类嵌套类型1
{
公共字符串Member1{get;set;}
公共字符串Member2{get;set;}
}
因此,我只想点击在索引entry1.NestedProperty1集合中具有特定组合的Member1和Member2值的文档
我想我必
我想使用NEST.Net库对弹性搜索进行批量插入。但我不想在文档中存储我的id
通过一次插入,当Id不在我的类型中时,我可以使用.Id()函数设置Id
有没有办法用IndexMany函数做到这一点
或者不在文档中存储id是一种不好的做法?除了精确搜索,我不使用Id。为什么要存储两次?您也可以使用批量设置自己的id:
var descriptor = new BulkDescriptor();
foreach (var i in Enumerable.Range(3000, 1000))
所以我尝试下面的查询,但只得到10个结果。我想要所有匹配的结果
elasticSearchQuery = (q => q.Filtered(frd => frd
.Query(qf => qf.MatchAll())
.Filter(f => f.Bool(b =>
b.Must(mt =>
我在控制器中实例化了一个客户机:
public ElasticConnector()
{
var node = new Uri(String.Format("http://{0}:{1}", ConfigurationManager.AppSettings["ElasticHost"], ConfigurationManager.AppSettings["ElasticPort"]));
var settings = new Connection
在最新的2.0 alpha版本中,您能否对仍使用nest的字符串执行范围查询?或者这已经在elasticsearch中删除了
--表明它本身仍在进行弹性搜索
然而
--似乎只接受“双倍”
例如
以前在1.7 Nest中工作,但现在说LessThanOrEquals的输入必须是双精度的
我现在如何获取“name”介于“a”和“f”之间的所有内容
编辑:
我想它是在文件src/Nest/QueryDsl/TermLevel/Range/RangeQuery.cs中删除的。。。只是找不到“为什么”字符
我输入下面的查询,返回的响应是一个400错误,表示“元数据不是嵌套类型”,有人能帮我解决这个问题吗
var res=client.Search(s=>s.Query(q=>q.Nested(n=>n.Path(b=>b.Metadata)).Query(nq=>nq.Terms(t=>t.Field(f=>f.Metadata.ObjectType)).Terms(“Doc”)).ignoreunmap()) 我已经弄明白了。正如Russ Cam在注释中提到的,文档没有与指定对象嵌套的查询一起存
我想执行一个实现以下项目的搜索
现在,我已经通过regex实现了所有这一切,它远没有涵盖所有内容,我想知道我可以在多大程度上使用ElasticSearch来实现这一点:
同义词
我的理解是,这是在创建索引时实现的
indexSettings.Analysis.TokenFilters.Add(“同义词”,新同义词tokenfilter{Synonyms=new[]{“tire=>tire”,“aluminal=>aluminal”},IgnoreCase=true,Tokenizer=“whi
我目前在windows服务器中有一个用于elasticsearch的节点。您能解释一下如何在不同的机器上添加一个额外的节点进行故障切换吗?我还想知道如何使用NEST使两个节点保持相同。通常,您不运行故障转移节点,而是运行一组节点以提供高可用性
一个具有3个合格节点的最小拓扑,设置为2,一个分配策略在节点上分配主副本和副本碎片以提供数据冗余是在生产中考虑的最小可行拓扑。
我们总是在某种意义上创建弹性搜索查询,然后在嵌套中创建相应的查询版本
使用NEST客户端而不是直接将JSON弹性搜索查询放回搜索文档有什么好处?下面列出了您选择使用NEST(弹性搜索的高级客户端)的原因:
使用.NET 4.5、.NET 4.6和.NET标准1.3(及以上版本)进行支持和测试
建模为类型的所有请求和响应
允许将文档建模为普通的旧CLR对象(POCO)
已映射所有Elasticsearch API
使用lambda表达式的强大fluentapi使构建查询变得更加容易。包括无条件查
对于一个字段,我有几个不同的映射。我有一个领域是语音。我想用模糊性做一个查询,但不要在语音领域使用模糊性
...
_client.Search<JobModelSummary>(s => s
.Index(indexName)
.Query(q => q
.MultiMatch(m => m
.Query(paginationQuery.Search)
.Type(TextQueryType.MostFields)
我正在寻找NEST lib使用后功能的代码片段。
提前感谢您提供的代码片段,您可以将先前复合聚合中的复合键作为新复合聚合的.After()参数传递。比如说
var-pool=新的SingleNodeConnectionPool(新Uri(“http://localhost:9200"));
var设置=新连接设置(池);
var客户端=新的ElasticClient(设置);
var searchResponse=client.Search(s=>s
.从(0)
.AllIndices()
.
基本上,我在es中有一个目录设置,每个类别都有一个id(int)和一个字符串形式的名称
我有一个方面目前正在工作,以获得他们的id类别和计数,以显示他们在一个'过滤器'类型的显示在网站上
不管怎么说,facet显然被贬低了,所以它说在站点上使用术语聚合
我输入了以下代码('catList'是主文档中的一个列表,因此嵌套):
(在.net中使用“嵌套”)
它的工作原理是,它返回其存储桶中的项目并获得正确的计数等,但“key”字段为“null”
问题:我可以取回包含整数的“key”字段吗
目前,我有
我正在尝试做一个增强查询,以减少字段名称类型和值按下时文档的分数
但是,NEST不会在生成的json对象的正字段中生成任何值:
"query": {
"boosting": {
"positive": {},
"negative": {
"term": {
"type": {
"value": "Press"
}
}
},
"negative
如何在elasticsearch中按嵌套字段类型列表的第一项进行搜索
public class Data
{
public int Id{get;set;}
public string Name{get;set;}
public List<History> Logs{get;set;}
}
public class History
{
public byte Status { get; set; }
public string Not
希望使用完成建议器构建电子商务网站的自动完成功能
这是我的索引:
PUT myIndex
{
"mappings": {
"_doc" : {
"properties" : {
"suggest" : {
"type" : "completion"
},
"title" : {
我正在尝试根据具有多个可能值的给定字段查询文档。例如,我的文档有一个“扩展名”属性,它是文件的扩展名类型,如.docx、xls、.pdf,等等。我希望能够对任意数量的值筛选我的“扩展名”属性,但找不到获得此功能所需的正确语法。以下是我当前的查询:
desc.Type("entity")
.Routing(serviceId)
.From(pageSize * pageOffset)
.Size(pag
我在创建索引期间使用动态映射:
var node = new Uri(_settings.ElasticSearchEndPoint);
var connectionPool = new SingleNodeConnectionPool(node);
var _settings = new ConnectionSettings(
connectionPool,
new HttpCon
我知道有人说不建议做一些事情,但我想做不同类型之间的sql连接
我正在使用c#库的nest,它允许我执行一些动态构建的请求,以及可以使用以前请求的结果的后续请求
我看到了模拟子查询的解决方案:
在获取用作联接列的id列表的第一个类型中发出第一个请求
以第二种类型发出第二个请求,其中包含我在筛选查询中提前获得的id列表。这允许我将sql“in”等效为
也许你会想到一个更好的解决办法
我很快写了一个例子:
POST _bulk
{"index":{"_index":"test_index","_ty
我使用.net嵌套库查询弹性搜索,我有一些嵌套字段和其他字段
我想得到如下图所示的特定嵌套值,我得到的是正确的名称、标题、UrlId,但不是“en”中的CategoryNames值
据我所知,仅包含嵌套类型集合中的特定值是不可能的
不过,应该可以通过使用来获得该值。您可以与NEST共享您正在构建的整个查询吗?
我使用nest直接在ElastichSearch中执行相同的请求。
当我看到直接请求时,有多少文档与请求匹配
"hits":
{
"total": 1640,
"max_score": 1,
"hits": [...]
}
我的问题是:
var search = client.Search<RCompany>(s => s.Index("MyIndex")
.Query(qq => qq
.Filtered(m =>
最近,我在使用elasticsearch时遇到了一个非常奇怪和令人沮丧的问题。我已经使用NEST API索引了大约100万个文档。索引包含一个全文字段,如下所示:
{"title": {"include_in_all": false, "analyzer": "ik_max_word", "type": "string"}}
该领域的数据主要是中文,ik_max_word是一个中文分析器,具有最精细的颗粒。问题是:
1) 通常,我在该字段上使用匹配短语查询,当我像“ABC”这样查询时(我在这里
标签:elasticsearch Nest
match-phrase
我正在尝试使用MatchPhase进行查询,但是在多个字段上,但我的nest只允许在一个字段上进行查询。这是我的代码片段
var result=client.Search(s=>s
.Analyzer(“自动完成”)
.Query(p=>p
.MatchPhrase(M=>M
.OnField(“描述”)
.Query(value));
我在类文档中有多个字段,我也想搜索这些字段
请帮我做这个-提前谢谢 甚至不支持多个字段。要在多个字段上使用匹配查询,需要使用query
var result=
我有一个ES文档,其中一个字段是guid
当我尝试进行匹配时,破折号在我的搜索中造成了严重破坏,我得到了一堆不相关的部分匹配
由于此字段是guid,因此始终需要精确匹配
在Kibana中,我可以将guid用引号括起来,得到精确的匹配;对于NEST,引号没有帮助。我也曾试图逃避这些冲击,但没有成功
我需要按原样存储guid,因为在某些情况下,我必须以完整的guid检索文档,因此无法删除其中的破折号
有没有办法用NEST标记该字段,以便在查询时只返回完全匹配的字段
编辑:
下面是我的回答:
我在
我们需要搜索具有可变/动态字段数的文档类型。对于一个搜索/类型,它可能是名称和状态。另一个例子是描述字段。用户将在运行时选择要搜索的字段
静态地做到这一点似乎很容易。类似这样的内容可以在名称和描述字段中搜索。(假设rootQuery是一个有效的searchDescriptor,可用于查询
rootQuery.Query(q => q.MultiMatch(mm => mm.Query(filter.Value.ToString()).Fields(f => f.Field(ff
我已经将一系列ElasticSearch嵌套代码集成到我们自己的解决方案文件中。在我这么做之前,我先在一个单独的解决方案中对它进行了测试。在我的单独解决方案中,一切正常
例外情况的详情如下:
Elasticsearch.Net.UnexpectedElasticsearchClientException: The type initializer for 'Nest.JsonNetSerializer.Converters.HandleNestTypesOnSourceJsonConverter
我正在尝试使用NEST SearchRequest对象查询ElasticSearch索引中的动态类型列表
public object Search(object runTimeData)
{
var request = new SearchRequest()
{
From = 0,
Size = 10
};
request = SetRouting(request, runTimeData);
request = SetIndices(req
我试图对嵌套类型的计数或嵌套类型属性的总和进行聚合,但无法使嵌套在计算中包含多个嵌套文档
var result = elasticClient.Search<ItemIncidents>(s => s
.Aggregations(a => a
.Terms("group by role", ts => ts
.Field(o => o.LabelName)
之前在NEST(对于Elasticsearch 1.x)中,在一个聚合查询之后,我有一些代码,通过遍历所有的bucket对聚合进行了遍历和分组,如下所示:
var r = (from SingleBucket items1 in result.Aggregation.Values
select (Bucket) agg1
into items1Aggs
from col1 in items1Aggs.Items.Cast<KeyItem>()
....
select new x {}
我已经厌倦了试图找出如何使用Nest以我想要的方式查询我的数据——它似乎总是推断出错误的url来发布搜索请求
无论如何,我已经把这个看起来很难看的代码放在一起了,看起来很有效:
using (var client = new HttpClient())
{
client.BaseAddress = node;
var content = new StringContent("{\"size\": 0,\"qu
更新到elasticsearch 7.5.1后,以下代码现在导致异常
“未找到入口点”
请注意,通过fiddler发出以下请求
POST http://localhost:9200/_snapshot/C__MYFOLDER_Backup/_verify HTTP/1.1
User-Agent: Fiddler
Host: localhost:9200
Content-Type: application/json
Content-Length: 0
返回
{"nodes":{"1cWG9trD
通过nest的单个查询检索我所期望的内容,但是当我尝试使用这两个查询来创建逻辑and查询时,它似乎只返回匹配短语的值,而忽略了日期范围
单个查询是
resultsList = Client.SearchAsync<AuditLog>(s => s
.From(0)
.Take(10)
.Query(q => q
.MatchPhrase(mp => mp
.Field("audit_Action")
我有一个类型,我需要使用不同的语言分析器对其进行索引或搜索,该分析器根据文档中文本的语言而有所不同。如何为每次搜索或索引操作指定分析器?在上回答
在elasticsearch中,组合/索引/类型是唯一的。如果您有一个类型的名称属性要以不同的方式映射,则需要索引到两个不同的elasticsearch类型,每个类型都有自己的映射
在嵌套中,只要映射/索引/搜索,就可以显式指定typename,而无需使用两种不同的CLR类型
我已经使用Elasticsearch.Net&NEST客户端库编写了一些代码,这些代码应该在不使用POCO映射字段的情况下对文档进行索引,因为我有许多不同的文档
问题1)这是创建索引的正确方法吗,.AddMapping(mapping=>mapping.Dynamic(true))是否基于传入的文档创建映射
var newIndex=client.CreateIndex(indexName,index=>index
.NumberOfReplicas(复制副本)
.NumberOfShard(碎
我对Nest1.0pr和连接错误处理有疑问。在以前版本的Nest中,我使用的是IResponse.ConnectionStatus.Error。在我看来,新版本中不再存在属性错误。但是,在文档中,我发现了以下内容:
ConnectionStatus是由返回的响应
Elasticsearch.net。关于处理响应的部分适用于以下情况:
嗯
在这一节中,我们提到了属性错误
调用成功但未返回http状态代码时出错
200此属性将包含有关错误的详细信息。阅读更多关于
这里的错误处理
那么,检查属性Suc
我创建了一个公司类型。在该公司类型中,我有一个名为“摘要”的字段。如何将多个索引分析器添加到此字段
我简要介绍了使用Yakaz插件的情况,但似乎我无法将其用于NEST
这背后的原因是,有时用户会在查询中搜索带有句号的公司名称,而其他时候则不包括句号。我想在公司名称上使用ngrams进行部分匹配,有标点符号和无标点符号。我目前正在使用stopwords过滤器删除标点符号
摘要字段的属性(具有多个索引分析器会引发错误):
映射:
private static void CreateMapping(E
Nest是否支持对多个字段进行排序?例如,假设我想先按字段A升序排序,然后按字段B降序排序
我目前的做法如下:
searchDescriptor.Sort(s =>s.OnField("FieldA").Ascending().OnField("FieldB").Descending());
但“FieldB”.Descending()部分似乎是发送给elasticsearch的唯一排序选项
有人知道是否有其他方法可以实现这一点吗?您正在同一排序描述符上添加多个字段,这将覆盖以前的值。相
我使用的是NEST lib,并且是文档中非常基本的设置。我添加了索引、映射等
但当我尝试进行搜索时,它总是给我“添加了一个具有相同密钥的项目”。这让我很困惑这个错误意味着什么
var result = client.Search<Contact>(s => s
.AllIndices()
.From(0)
.Size(10)
.Query(q => q
filterInputs.cities是字符串数组。(字符串[])
我在这里没有提到完整的多搜索查询
但它返回(假设城市为1,2,3,4):
如果文档元素的cityId为1,而filterInputs.cities为1,
此记录将被返回
如果文档元素具有cityId 3和
filterInputs.cities有1,3,返回此记录
如果文件
元素的cityId为4,filterInputs.cities的值为1,2。此记录为
返回
基本上,ms.Terms匹配filterInputs.citie
标签: Nest
elasticsearch-net
我们正在运行多个单元测试,每个单元测试都创建自己的ElasticClient实例。一些测试使用“StringEnumConverter”转换枚举,其他测试将使用默认转换器(转换为整数)。问题是,连接设置似乎缓存在某个地方,这只是决定如何转换枚举的第一个测试
这不是线程问题,因为我们是按顺序运行测试的
TestBase类的构造函数如下所示:
public TestsBase(bool serializeEnumsToString = false)
{
var node = new Uri(
我有一个SyncFusion Blazor数据网格,由SyncFusion Blazor数据管理器和Blazor客户端上的自定义适配器管理,用户可以在其中添加、编辑和删除针对ElasticSearch文档索引执行后端搜索查询的项目
示例网格
当我向DataGrid中添加新行并按save时,客户机通过后端API服务调用以将数据添加到Elastic中。插入完成后,SyncFusion数据管理器进行最后一次回调,以读回当前数据页
我使用NEST是因为这是一个.Net后端服务,当前搜索查询的起始位置和
我已经厌倦了实现elasticsearch NEST客户端和索引文档和SQL数据,并且能够完美地搜索这些。但我无法在这些记录上使用stopwords。下面是代码。请注意,我把“abc”作为停止词
公共索引设置GetIndexSettings()
{
var stopTokenFilter = new StopTokenFilter();
string stopwordsfilePath = Convert.ToString(ConfigurationManage
1 2 3 4 5 6 ...
下一页 最后一页 共 12 页